我用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 into
TODOS(
Title,
Completed,
User_id,
Update_at,
Created_at)值(darya,0,?,2020-07-06 12:17:45,2020-07-06 我是新来拉拉维尔的,我很感激任何帮助!
你在关系中传递了错误的参数。
public function todos()
{
return $this->hasMany(
Todos::class,'user_id','id'
);
}
return $this->hasMany(Todos::class, 'foreign_key', 'local_key');