2015-09-05 61 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;