提问者:小点点

SQLSTATE[23000]:完整性约束冲突:1048列“USER_ID”在laravel中不能为null


我用Vue在laravel中创建了一个todo应用程序。 我有两个表:users和TODOS; 每个用户都有许多像这样的TODO:user.php model:

class User extends Authenticatable {
    protected $fillable = [
        'name', 'email', 'password',
    ];
    public function todos()
    {
        return $this->hasMany(
            Todos::class,
            'user_id',
            'user_id'
        );
    }
}

todos.php模型:

class Todos extends Model
{
    //
    protected $fillable = ['title', 'completed', 'user_id'];

    public function user()
    {
        return $this->belongsTo('App\User');
    }

然后我定义了这条路由:

Route::post('/v1/todo', 'todosController@addTodo');

这是我来自TodosController的addTodo:

 public function addTodo(Request $request)
    {
        $uid = Auth::user()->id;
        //dd($uid);

        $todoCreated = new Todos([
            'title' => $request->input('title'),
            'completed' => 0
        ]);
        $user = User::find($uid);
        //dd($user);

        //dd($todoCreated);
        dd($user->todos()->create([
            'title' => $request->input('title'),
            'completed' => 0,
        ]));
}

当我发送表单数据时,它显示了以下错误:Illuminate\Database\QueryException SQLState[23000]:完整性约束冲突:1048列“user_id”不能为空(SQL:insert intoTODOS(TitleCompletedUser_idUpdate_atCreated_at)值(darya,0,?,2020-07-06 12:17:45,2020-07-06 我是新来拉拉维尔的,我很感激任何帮助!


共1个答案

匿名用户

你在关系中传递了错误的参数。

public function todos()
{
    return $this->hasMany(
        Todos::class,'user_id','id'
    );
}


return $this->hasMany(Todos::class, 'foreign_key', 'local_key');