【发布时间】:2018-10-21 12:07:20
【问题描述】:
在我的控制器类中,我正在获取属于当前登录用户的所有餐厅特色菜,以及特色菜的美食类型以及特色菜所属的餐厅。
我使用下面的sn-p:
public function edit(Special $special)
{
dd($special->with('restaurants')->with('cuisines')->get()->keyBy('id')->toArray());
}
这会产生:
->keyBy('id') 方法允许我将“特殊”数组键设置为数据库中的记录 ID。
但是,我不知道如何将关系记录数组键设置为它们各自的 ID。
例如。 餐厅数组中的第一项应具有“1”键。美食数组中的第一项应具有“25”键。
我尝试过这样的事情:
$special->with('restaurants')->keyBy('id')->with('cuisines')->keyBy('id')->get()->keyBy('id')->toArray()
抛出: 方法 Illuminate\Database\Query\Builder::keyBy 不存在。
我的美食和餐厅表都有一个主键 id 列。
【问题讨论】:
-
keyBy(...)是收集功能,因此您需要在每个关系上“链接”此调用。我不打算在这里写整个链,但想法是$special->with(['restaurants', 'cuisines'])->get()->keyBy('id')->first()->restaurants->keyBy('id')... 关键是这仅适用于 first$special所以你需要使用transform()或 @987654324 @. -
您能否就答案提供反馈?
标签: php laravel eloquent many-to-many relationship