Laravel:自我 JOIN 的雄辩查询

Posted

技术标签:

【中文标题】Laravel:自我 JOIN 的雄辩查询【英文标题】:Laravel : Eloquent query for self JOIN 【发布时间】:2021-11-09 16:38:36 【问题描述】:

我有一个类别表,其中类别在同一表中提到了父项,如下面的屏幕截图所示

我想在 Laravel 中使用 Eloquent 实现自联接,其中在单独的 col 中提到了父类别:

原始 Sql 查询:

DB::select("SELECT  c.id, c.name, parents.name AS `Parent Category Name`
FROM  product_categories AS c
LEFT  JOIN  product_categories AS parents ON parents.id = c.parent
ORDER BY   c.name ASC");

这给了我以下结果:

array:3 [
  0 => #1146 
    +"id": 1
    +"name": "category 1"
    +"Parent Category Name": "category 2"
  
  1 => #673 
    +"id": 2
    +"name": "category 2"
    +"Parent Category Name": null
  
  2 => #1079
    +"id": 3
    +"name": "category 3"
    +"Parent Category Name": null
  
]

我想使用 Laravel Eloquent 达到同样的效果,然后在我的视图中循环,有人可以帮助我吗?

【问题讨论】:

您是否创建了包含关系和所有内容的模型...? 我只是使用 make: model 命令创建了模型 【参考方案1】:

试试类似的东西:

$result = ProductCategorie::leftJoin('product_categories as parents', 'parents.id', '=', 'product_categories.parent')
         ->select('product_categories.id', 'product_categories.name', 'parents.name as ParentCategoryName')
         ->get();

【讨论】:

是的,有效。感谢您的答复。一件事是使用关系也可以实现吗?如果你能给我一个方向而不是完整的查询,我会对此进行一些一般性的搜索。谢谢

以上是关于Laravel:自我 JOIN 的雄辩查询的主要内容,如果未能解决你的问题,请参考以下文章

Group_concat - laravel 雄辩

laravel 5.1 雄辩的选择与前缀连接表

Laravel 雄辩的极限查询

带有雄辩查询的 Laravel 分页

laravel 雄辩的关系查询

Laravel 5 雄辩的查询混淆