php - 如何从 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_id'
by :$manufacturer[0]->name
$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();
推荐阅读
- python - 在 Mongo Shell 中运行的 PyMongo 中复制正则表达式
- bash - bash 历史记录如何与 iterm2 一起使用?
- swift - 如何在 Swift Data 对象中写入新数据
- react-native - Lottie 动画在 android 中隐藏图层。(反应原生)
- jquery - 隔离 jquery 切换多个按钮
- r - 如何运行滚动窗口面板回归?
- r - 从文件夹中读取文件,尽管索引正确,但我收到“文件错误(文件,“rt”):无法打开连接”错误
- ios - 如何在 Swift 中显示日文字符?
- c# - 如何检查当前可执行文件是否已经绑定了 Windows 服务
- javascript - 计算列表项数量的问题