for my tasks table I keep getting SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'user_id' cannot be null when i run php artisan migrate --seed
Here's my code for TasksFactory.php
use App\User;
use App\Model\Task;
use Faker\Generator as Faker;
use Illuminate\Database\Eloquent\Model;
$factory->define(Task::class, function (Faker $faker) {
$title = $faker->sentence;
return [
'title' => $title,
'slug' => str_slug($title),
'description' => $faker->text,
'user_id' => function () {
return User::all()->random();
}
/**
* I've also tried this
*
* 'user_id' => function () {
return factory(App\User::class)->create()->id;
}
*/
];
});
Here's my DatabaseSeeder
use App\User;
use App\Model\Task;
use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder
{
/**
* Seed the application's database.
*
* @return void
*/
public function run()
{
factory(User::class, 3)
->create()
->each(function ($u) {
$u->tasks()->save(factory(Task::class)->make());
});
}
}
and my task Model looks like this with Mass Assignment set to $guarded = [] and user() method for relationship with tasks
namespace App\Model;
use App\User;
use Illuminate\Support\Facades\Auth;
use Illuminate\Database\Eloquent\Model;
class Task extends Model
{
protected $guarded=[];
protected static function boot()
{
parent::boot();
static::creating(function ($task) {
$task->slug = str_slug($task->title);
$task->user_id = auth()->id();
});
}
public function getRouteKeyName()
{
return 'slug';
}
public function user()
{
return $this->belongsTo(User::class);
}
public function getPathAttribute()
{
return "/task/$this->slug";
}
}