【问题标题】:Getting the id of recently updated hasMany relationship获取最近更新的hasMany关系的id
【发布时间】:2020-03-29 14:41:55
【问题描述】:

我正在做一个项目,我需要在我的控制器中更新两个相关模型。下面,我正在为一个可以有很多交易的用户创建一个交易记录。之后,我需要访问最近创建的事务的 id,但是由于那是 hasMany 关系,laravel 会抛出错误。

用户模型

public function transaction()
{
    return $this->hasMany('App\Model\Transaction');
}

控制器

    $user->transaction()->create([
        ...
        ...
    ])->save();

    $devUnit = new DevUnit();
    $devUnit->transaction_id = $user->transaction()->id; //this throws an error

错误

Undefined property: Illuminate\Database\Eloquent\Relations\HasMany::$id

【问题讨论】:

    标签: laravel eloquent laravel-6


    【解决方案1】:

    抱歉,完全误读了您的问题。

    create 方法的结果保存到一个变量中,以访问带有 ID 的填充模型。

    $transaction = $user->transaction()->create([
        //
    ]);
    
    $timeshareUnit = new TimeshareUnit();
    $timeshareUnit->transaction_id = $transaction->id;
    

    【讨论】:

    • $transaction = $user->transaction()->create([ // ])->save(); 调用 save 会返回一个布尔值.... 所以在此之后调用 id 会引发未定义的错误
    • 复制的有点多。使用create()时不需要save()方法。
    • 仍然得到一个未定义的属性
    • 很奇怪。这个对我有用。 id 列是否存在于transactions 表中? create() 返回什么?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-28
    • 1970-01-01
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    • 2020-03-05
    • 2020-05-31
    相关资源
    最近更新 更多