【问题标题】:Laravel Nested Relationship Get List of Ids in ColumnLaravel 嵌套关系获取列中的 ID 列表
【发布时间】:2020-08-30 19:03:26
【问题描述】:

我遇到了一个我无法解决的问题:/

所以,我目前有 4 个模型:Make > Model > Generation > Version(['engine_type'])

我需要获取某个车型在其版本中的所有燃料(engine_type)的唯一列表。即:对于 $model = Model::find(1) 我想要所有的 $model->generations()->versions()->get('engine_type') 作为唯一 ID 列表,这样我就可以知道哪个引擎该车型的类型!

提前致谢!

【问题讨论】:

标签: laravel eloquent


【解决方案1】:

第一步:您应该获取当前模型的所有代,这可以通过将表“模型”与表“代”连接来实现 ....

第二步:将结果与包含我们希望显示的结果列 ('engine_type') 的表“版本”连接起来 这个连接链应该使用代表表之间关系的外键,所以你必须确保你设置好你的关系......

第三步:选择 'versions.engine_type' 后使用 'distinct()' 确保没有重复的结果, 更多关于不同之处:

https://laravel.com/docs/7.x/queries#selects

$ids= Model::where('id',$modelId)->join('generations','generations.model_id','models.id')
->join('versions','versions.generation_id','generations.id')
->select('versions.engine_type')->distinct()->get();

【讨论】:

  • @OMR 快速跟进,现在它正在返回模型,我只想要一个带有 => [1, 2] 之类的 id 的数组,我该怎么做?
  • 你可以使用 ->all() 将结果做成数组
  • @JeremyCaney 是的,对于专家或相对经验丰富的编码人员来说,这可能是一个答案,但您可能也知道,用有用的解释记录代码有助于我们的社区和新的热心程序员。
  • @iankits:这个问题现在已修复,因此不再相关,但值得注意的是,虽然不鼓励使用纯代码答案,但 are still considered answers - 当然,假设它们是其他主题.您的第一条评论很好(我赞成),但答案不应该被投票删除。也就是说,我完全同意纯代码的答案并不能实现 Stack Overflow 的承诺,即帮助教育新的和热情的程序员。
  • 另外,感谢@omr 更新您的答案。这是一个很大的改进。
猜你喜欢
  • 2021-08-05
  • 1970-01-01
  • 2021-08-25
  • 1970-01-01
  • 2019-11-17
  • 2023-02-20
  • 1970-01-01
  • 2016-07-22
  • 2022-10-12
相关资源
最近更新 更多