首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel 8框架中的自连接

Laravel 8框架中的自连接
EN

Stack Overflow用户
提问于 2021-03-15 15:06:12
回答 1查看 267关注 0票数 0

我正在做这个项目,因为我正在使用Laravel 8作为我的后端框架,我必须做一个自我加入,我已经尝试了这个代码,但它不工作-the first Join是一个我尝试但失败的-:

代码语言:javascript
复制
   public function get_all_medical_centers(){
    $data= DB:: table('medicalcenters')
    ->join('medicalcenters','medicalcenters.id',"=",'medicalcenters.parent_id')
    ->join('countries','medicalcenters.country_id',"=",'countries.id')
    ->join('states','medicalcenters.country_id',"=",'states.id')
    ->join('cities','medicalcenters.country_id',"=",'cities.id')
    ->select('medicalcenters.*', 'countries.name as country_name', 'states.name as state_name', 'cities.name as cities_name')
    ->get();
    return $data;
}

问题是,在数据库中,医疗中心表中有一些属性是其他属性的父属性,我希望在预览子属性时获得父属性的名称,以便同时预览其父属性的名称,而不仅仅是id。

表示图:

EN

回答 1

Stack Overflow用户

发布于 2021-04-13 22:58:34

如果您尝试自联接一个表,那么您必须为其中至少一个表提供别名,否则,如果您从这些表中选择任何列,SQL就无法知道您在引用什么。

要向联接的表中添加别名,可以执行以下操作:

代码语言:javascript
复制
DB::table('medicalcenters AS medc')
    ->join('medicalcenters AS self','medc.id',"=",'self.parent_id')

但这是一个老生常谈的解决方案,对于Laravel中的普通关系数据,雄辩的模型会更好。

编辑为什么在自连接上需要别名:

如果你连接两个表,让我们说:users join posts on users.id = posts.user_id。您必须指定联接条件。这是users.id = posts.user_id

让我们将其修改为自连接:users join users on users.id = users.user_id。在这里,条件并不清楚。此users.id或此users.user_id是原始表还是自联接表?目前还不清楚如何连接这两个表。所以我们必须给他们不同的名字,也就是别名。像这样的users as creators join users as subscribers on creators.id = subscribers.user_id

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66633630

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档