Laravel使用groupBy获取数组数组

时间:2014-06-17 00:02:55

标签: php mysql laravel eloquent

我有一张Laravel表posts,其中包含多个categories。如何获取按posts分组的所有categories?我正在做Post::where('userID', 1)->groupBy('categoryID')之类的事情。但是这只返回了一个扁平数组的命名数组,如下所示:

[1 => ['title'=>'title 1'], 2 => ['title'=>'title3']]

如何返回这样的数组数组:

[1 => [['title'=>'title 1'], ['title' => 'title 2], 2 => [['title'=>'title 3']]]

更新: 我正在进行连接,然后使用Laravel的集合在php中对它进行排序:

   Post::join('categories', ....).where('userID', 1)->get()->groupBy('categoryID');

我能够得到我想要的东西,但想知道是否有更好的方法?

1 个答案:

答案 0 :(得分:1)

你可能想要这个:

$catsWithPosts = Category::with(array('posts' => function($query){
    $query->select('title')->where('userID', 1);
}))->get();

假设您已在PostCategory模型之间声明了正确的关系。