Laravel: 创建关系记录时,无法将外键插入 table
Laravel: When creating a record with relations, cannot insert foreign key into table
我正在按照 Laravel 5.2 文档中的 "intermediate task list" 进行练习,但在理解 this piece of code 的工作原理时遇到了一些困难。
$request->user()->tasks()->create([
'name' => $request->name,
]);
问题 1
具体来说,我对 user()
和 tasks()
方法之间的关系感到困惑。为什么以及如何让 user()
和 tasks()
方法从 $request
对象可用?
问题 2
我创建了一个类似的应用程序,并且有 Person
和 Country
模型。我想从下拉列表中传递 country_id
输入,但我无法使用以下代码更新数据库。
public function store(Request $request)
{
$this->validate($request, [
'name' => 'required|max:255',
'country_id' => 'required|max:3',
]);
$request->user()->people()->create([
'name' => $request->name,
'country_id' => $request->country_id,
]);
return redirect('/people');
}
为什么country_id不能保存到table?我尝试将 user()
更改为 country()
,但错误消息显示 "class Country" 未找到。但是为什么教程中的'user()'可以使用呢?我很困惑。
如果发出请求的用户已通过身份验证,则可以使用 user()
请求方法。
由于它使用 User
模型,它还可以获取相关模型。要使 tasks()
起作用,必须在用户模型中定义 Task
关系。
要创建country_id
(批量分配)确保其包含在People
模型
的$fillable
属性中
$fillable = ['country_id']
请阅读 Laravel 文档中的 Eloquent 模型关系部分。
我正在按照 Laravel 5.2 文档中的 "intermediate task list" 进行练习,但在理解 this piece of code 的工作原理时遇到了一些困难。
$request->user()->tasks()->create([
'name' => $request->name,
]);
问题 1
具体来说,我对 user()
和 tasks()
方法之间的关系感到困惑。为什么以及如何让 user()
和 tasks()
方法从 $request
对象可用?
问题 2
我创建了一个类似的应用程序,并且有 Person
和 Country
模型。我想从下拉列表中传递 country_id
输入,但我无法使用以下代码更新数据库。
public function store(Request $request)
{
$this->validate($request, [
'name' => 'required|max:255',
'country_id' => 'required|max:3',
]);
$request->user()->people()->create([
'name' => $request->name,
'country_id' => $request->country_id,
]);
return redirect('/people');
}
为什么country_id不能保存到table?我尝试将 user()
更改为 country()
,但错误消息显示 "class Country" 未找到。但是为什么教程中的'user()'可以使用呢?我很困惑。
如果发出请求的用户已通过身份验证,则可以使用 user()
请求方法。
由于它使用 User
模型,它还可以获取相关模型。要使 tasks()
起作用,必须在用户模型中定义 Task
关系。
要创建country_id
(批量分配)确保其包含在People
模型
$fillable
属性中
$fillable = ['country_id']
请阅读 Laravel 文档中的 Eloquent 模型关系部分。