我正在关注 Laravel 5.2 文档中的“中间任务列表”练习,并且在理解如何 this piece of code 方面遇到一些困难。作品。
$request->user()->tasks()->create([
'name' => $request->name,
]);
问题 1
具体来说,我对 user()
和 tasks()
方法之间的关系感到困惑。为什么以及如何才能从 $request
对象中获取 user()
和 tasks()
方法?
问题 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无法保存到表中?我尝试将 user()
更改为 country()
但错误消息显示“class Country”未找到。但是为什么教程中的“user()”可用呢?我很困惑。
最佳答案
如果发出请求的用户经过身份验证,则请求的 user()
方法可用。
由于它使用User
模型,因此它还可以获取相关模型。为了使 tasks()
工作,Task
关系必须在用户模型中定义。
对于要创建的country_id
(批量分配),请确保将其包含在People
模型的$fillable
属性中
$fillable = ['country_id']
请阅读 Laravel 文档中的 Eloquent 模型关系部分。
关于forms - Laravel:创建具有关系的记录时,无法将外键插入表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34938906/