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

我创建了一个类似的应用程序,并且有 PersonCountry 模型。我想从下拉列表中传递 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 模型关系部分。