首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel:查询只获取一个相关的id

Laravel:查询只获取一个相关的id
EN

Stack Overflow用户
提问于 2016-10-03 06:31:42
回答 3查看 96关注 0票数 0

我试图获取与特定列表相关的所有id,但我的查询只是返回表中的第一个相关id,而不是其他的。

代码语言:javascript
复制
List      | id | person_id | name      | description
          | 1  | 10        | Test List | null

List_Ref  | id | list_id   | data_id 
          | 1  | 1         | 100
          | 2  | 1         | 101

查询

代码语言:javascript
复制
$lists = DB::table('List')
   ->leftJoin('List_Ref', 'List_Ref.list.id', '=', 'List.id')
   ->select('List.id', 'List.name', 'List_Ref.data_id')
   ->where('person_id', Auth::user()->person_id)
   ->groupBy('List.id')
   ->orderBy('List.id')
   ->get();

结果(拉幅模和转储)

代码语言:javascript
复制
#items: array:1 [
  0 => {
    "id"      : 1
    "name"    : "Test List"
    "data_id" " 100
  }
]

我想得出如下的结果

代码语言:javascript
复制
#items: array:1 [
  0 => {
    "id"      : 1
    "name"    : "Test List"
    "data_id" => {
      "id" : 100
      "id" : 101
    }
  }
]
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-10-04 06:01:43

如果希望获得可用的分组项,请在构建查询时不要使用组。

就像这样:

代码语言:javascript
复制
$lists = DB::table('List')
   ->leftJoin('List_Ref', 'List_Ref.list.id', '=', 'List.id')
   ->select('List.id', 'List.name', 'List_Ref.data_id')
   ->where('person_id', Auth::user()->person_id)
   ->get();

$lists->groupBy('List.id')->orderBy('List.id');

使用laravel集合的groupBy和orderBy方法获得分组项。希望它能帮到你!

票数 0
EN

Stack Overflow用户

发布于 2016-10-03 06:37:58

我不知道拉拉,但你正在做一个从“列表”到"List_Ref“的左联接。因此,Talbe中的每个条目都将与List_Ref的一个条目匹配。

试着加入。

票数 0
EN

Stack Overflow用户

发布于 2016-10-03 07:16:47

不要使用groupBy('List.id'),它将根据列表表的id对数据进行分组&始终只返回单个数据。

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

https://stackoverflow.com/questions/39825681

复制
相关文章

相似问题

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