2014-03-03 62 views
0

我需要獲取該用戶所屬的所有車型,另外所有模型where private = 0(所有其他用戶)有附加條件

我已經有兩個試了一下機鋒belongsToMany關係合併單獨查詢 - 但與此方法有重複的項目。

而且,這種方法行不通:

$this->belongsToMany('ManiacTwister\Models\Collection', 'collection_members') 
->orWhere("private", "=", 0); 
+1

您的解決方案將defi只要你想檢查相關模型表格上的私人字段,但你可能需要使用'relatedTableName.private','=',0 –

回答

1

假設「私人」領域是你的collection_members表,然後使用「私有」,然後通過轉動搜索設置樞軸場

$this->belongsToMany('ManiacTwister\Models\Collection', 'collection_members') 
     ->orWherePivot('private','0'); 

,或者你可以

$this->belongsToMany('ManiacTwister\Models\Collection', 'collection_members') 
     ->orWhere("collection_members.private", "=", 0); 

兩者都應該工作的第一個是表不可見(即它鏈接到模型),但第二個將更快

+1

修復:orWherePivot(...),都需要orWhere .. –

+0

好點,做得好:) – dops

+1

編輯。我相信你在第一個例子中有一個額外的「(」在給belongsToMany打電話。 – lagbox

0

脫下你的模型和貪婪加載它orWhere()

$member = Member::where('id', '1')->has(array('collections' => function($q) 
{ 
    $q->where('private', '0'); 
}))->get()->first(); 

foreach($member->collections as $collection) { 
    echo $collection->name; 
} 
+0

'方法名稱必須是字符串'(has()以第一個參數作爲數組)。此外,我想這將返回所有非私人模型屬於給定的用戶,但我想要所有用戶的所有非私人粘貼。 – ManiacTwister