Laravel HasMany 创建子记录

Bel*_*eró 5 laravel laravel-5

当我尝试创建与其父级关联的子模型时遇到问题。

我有 2 个型号:

  • 机构(有多个地址)
  • 地址(有1个机构)

当我单击一个机构并转到 show.blade.php 时,我有一个表单可以为该机构创建地址,但我无法从请求中获取将子项与父项相关联的字段“instituion_id”。

这在请求中显示:

请求数据

在此输入图像描述

从表单中,我调用以下路由:action="/institution/{{ $institution->id }}/addresses"

这是AddressController中的代码:

public function store(Request $request)
{
    // dd($request->all());
    Address::create($request->all());
    return back();
}
Run Code Online (Sandbox Code Playgroud)

当我测试它时,数据库询问 istitution_id 列:

SQLSTATE [ HY000]:一般错误:1364 字段“institution_id ”没有默认值(SQL:插入(addresses、、、、、、、、、、、)值(a address_name、 a 、 a、a、a、a、a , 2017-12-14 14:06:47, 2017-12-14 14:06:47))address_numberaddress_full_nameaddress_cityaddress_stateaddress_postal_codeaddress_countryupdated_atcreated_at

那么,如何从表单传递字段“institution_id”以及如何将其获取到控制器中并将其关联到子记录?

我读了很多帖子,但在所有帖子中,它们都只是创建一个包含一个字段的子记录,但我想处理包含所有地址字段的完整请求。

问候

pho*_*nix 1

我是这样做的。我有 2 个模型/控制器:网站和访客。访问者依赖于网站。

路线:

Route::resource('website', 'WebsiteController');
Route::resource('website/{website}/visitor', 'VisitorController');
Run Code Online (Sandbox Code Playgroud)

不要忘记设置所有关系。我只会向您展示在网站模型中用于保存数据的模型:

public function visitors()
{
    return $this->hasMany('App\Visitor');
}
Run Code Online (Sandbox Code Playgroud)

然后,在 VisitorController 内的 store 中:

public function store(Request $request, Website $website)
{
    return response()->json(
        $website->visitors()->create([
            ... fields without website_id (the relationship field) ...
        ]), 
        201
    );
}
Run Code Online (Sandbox Code Playgroud)