如何替换Laravel中select()方法中的值



我有一个名为"GearItem"的模型,它有一排排齿轮项目。其中一列称为"manufacturer_id"。-这些是"制造商"模型的id,包含每个齿轮项目的制造商数据。

我在我的GearItem控制器中创建了一个名为";getItemsNames"我希望它返回一个JSON,看起来像这样:

[
{id: 1,
name: "foo",
manufacturer: "bar"}, 
{id: 2,
name: "baz",
manufacturer: "qux"},
{...}, 
]

如何更改查询GearItem::select('id', 'name', 'manufacturer_id')->get();

在我定义之后用$manufacturer[0]->name替换'manufacturer_id'

$manufacturer = Manufacturer::select('name')
->where('id', GearItem::value('manufacturer_id'))
->get();

我不知道如何在不破坏JSON结构的情况下插入这个逻辑。有没有一种优雅的方法可以做到这一点,或者我必须遍历JSON并用名称替换每个'manufacturer_id'

好的,RiggsFolly的提示帮助我找到了最优雅的解决方案,那就是->join()方法后进行选择。这解决了问题:

GearItem::select('gear_items.id', 'gear_items.name', 'manufacturers.name as manufacturer')
->join('manufacturers', 'gear_items.manufacturer_id', '=', 'manufacturers.id')
->get();

最新更新