2

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";
    }
}
MelbDev
  • 355
  • 1
  • 5
  • 12

0 Answers0