【问题标题】:Pluck Eager Loading Laravel 5.2采摘渴望加载 Laravel 5.2
【发布时间】:2018-02-16 13:41:27
【问题描述】:

在使用 Laravel 5.2 进行查询时,我如何提取预先加载的关系?

$users = User::with(['posts' => function($query){
       $query->pluck('id');
       }])->get();

我希望响应只是用户帖子 ID 的 数字,如下所示:

[{user: Blabel, posts: [24,25,26]},
 {user: Kraker, posts: [75,76,77]}]

我现在得到的是帖子表中的所有字段:

[{user:Blabel,
  posts:[{id:24, name: "blabla", text: "bleble"},
         {id:25, name: "blablabla", text: "blebleble"},
         {id:26, name: "blablablo", text: "blebleblo"},
         ...
        ]},
  {user:Kraker,
   posts:[{id:75, name: "krakra", text: "krekre"},
          {id:76, name: "krakrakra", text: "krekrekre"},
          {id:77, name: "krokro", text: "krekrekro"},
          ...
         ]}

我可以在 Eager Loading Constraint 中使用 pluck 吗? 和Pluck Eager Loading Laravel 5.4是同一个问题,但是我没有找到成功的答案。

【问题讨论】:

标签: laravel-5.2 eager-loading


【解决方案1】:

你必须在查询后提取id:

$users = User::with(['posts' => function($query){
   $query->select('id', 'user_id'); // assuming it's a HasMany relationship
}])->get();
$users = $users->toArray();
foreach($users as $i => $user) {
    $users[$i]['posts'] = collect($user['posts'])->pluck('id');
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-29
    • 2020-12-05
    相关资源
    最近更新 更多