LARAVEL雄辩的:属于关系-批量更新

时间:2020-06-11 20:23:04

标签: php laravel eloquent bulkupdate

想象一下我想将多本书借给客户。

一个客户可以借很多本书(有很多),但是一本书只能借给一个客户(BelongsTo)。 我想一次性更改多本书关系的BelongsTo一侧。 Laravel Documentation表示要使用associate()函数。但据我所知,那是一次更改一个对象。因此,我必须像在massLoanOne中那样使用循环。这会产生很多查询(n + 1)。

执行此操作的另一种方法是直接更新Book模型上的customer_id,如massLoanTwo中一样。 这仅生成2个查询。但这不是正确的面向对象方式。

是否有更好的方法使用雄辩魔术来更新此一对多(反向)关系bij的BelongsTo端?

<?php
    public function massLoanOne(MassLoanCustomerRequest $request)
    {
        foreach ($request->ids as $id) {
            Book::find($id)->customer()->associate(Customer::find($request->customer_id))->save();
        }

        return response()->noContent();
    }

    public function massLoanTwo(MassLoanCustomerRequest $request)
    {
        Book::whereIn('id', request('ids'))->update(['customer_id' => $request->customer_id]);

        return response()->noContent();
    }
?>

0 个答案:

没有答案
相关问题