【问题标题】:Create and associate with Eloquent in Laravel在 Laravel 中创建并关联 Eloquent
【发布时间】:2021-05-21 12:28:35
【问题描述】:

我可以在线创建和关联相关模型吗?例如

让表格 countries 带有 idsnames。例如171 | Poland

addressescountry_id 作为外键,但 不为空以及城市、街道等列。

AdressModel中,还设置了$fillable属性。

现在,要根据请求创建新地址,我知道三种方法。

  1. 'country_id' 添加到 AddresseModel $fillable 属性,然后添加 Country::create($request->address);
  2. 使用new Address(),然后将字段分配给匹配对象的属性。最后save();
  3. 允许 'country_id'可为空,使 Country::create($request->address) 和给定关系方法的调用 associate(),在这种情况下为 country()。

有没有办法在没有 nullable() 的情况下内联,比如:

$country = Country::find($request->country_id);
$address = Address::create($request->address)->country()->associate($country)

【问题讨论】:

    标签: laravel eloquent-relationship


    【解决方案1】:

    你可以这样做:

    $country = Country::find($request->country_id);
    $address = $country->addresses()->create([
        'city' => 'Barcelona',
        ...
    ]);
    

    【讨论】:

    • 谢谢!你是对的!但是如果我有两个关系的模型,例如 UserModeladdress_idcompany_id,两个外键 不可为空 并且相关模型是用 UserModel 一次?对 Eloquent 来说是不是太过分了?
    • 其实我从来没有遇到过这种情况,所以我真的不知道Eloquent能不能处理。我想我会在这里采取不同的方法:我会首先创建公司和地址,然后再创建用户(就像您示例中的方法 1)
    猜你喜欢
    • 1970-01-01
    • 2016-11-04
    • 1970-01-01
    • 1970-01-01
    • 2020-12-02
    • 2014-11-15
    • 1970-01-01
    • 1970-01-01
    • 2013-09-21
    相关资源
    最近更新 更多