2015-09-05 60 views
1

问题解决。Laravel雄辩鲜明的价值

我试图让一个人的书,但是由于书的版本不同,在我的书桌中有多本书。当我列出一个人的所有书籍时,我不应列出重复的内容。

这里是我迄今所做

角色模型

public function books() { 
    return $this->belongsToMany('\App\Models\Thing', 'bookxauthor', 'person_id', 'thing_id'); 
} 

PersonController.php

$allbooks = Person::find($id)->books; 

这是伟大的,它列出了一个作者的所有书籍,但我不需要重复。

下面的查询工作。 type_id意味着它是一本书。

$findBooks = Person::with(array('books' => function($query) 
      { 
       $query->where('type_id',"=",3)->groupBy('original_name'); 
      }))->find($id); 

      $allbooks = $findBooks->books; 

回答

2

你可以使用收藏 例如GROUPBY功能。

$allbooks = Person::find($id)->books->groupBy('name')->get(); 
+0

谢谢!我还需要添加另一个查询(其中type_id = 3),所以我使用了回调函数thingy。 – salep

+0

太好了,也检查了laravel中的集合的filter()函数。 http://laravel.com/api/5.1/Illuminate/Database/Eloquent/Collection.html#method_filter这可能也有帮助。 –

0

下面的查询工作。

$findBooks = Person::with(array('books' => function($query) 
      { 
       $query->where('type_id',"=",3)->groupBy('original_name'); 
      }))->find($id); 

      $allbooks = $findBooks->books;