2016-02-05 171 views
1

我試圖獲得與圖像的關係一個所有用戶很多。凡在圖像表列類型是等於1Laravel雄辯的查詢問題

最近我創建。

User::with('Images')->has('Images')->get(); 

但它返回的所有圖像不僅與類型1;

我也試過

$a = User::defaultImage()->get(); 

和用戶模型DEF範圍

public function scopeDefaultImage($query) { 

      $query->whereHas('Images', function ($query) { 
        $query->where('default', 1); 
       })->get(); 






     return $query; 
    } 

,但它不與圖像返回關係,只有用戶

+0

怎麼樣定義你們的關係? –

+0

OM我的用戶模型我有公共函數圖像(){ 回報 $這個 - >的hasMany( '應用程序\圖片'); } –

回答

2

你想修改的方式你正在使用你的with功能。這將讓這個返回的僅適用於圖像將是1型

User::with(['Images' => function($q) { 
    $q->where('type', 1); 
}])->whereHas('Images', function($q) { 
    $q->where('type', 1); 
})->get(); 

的通過也加入whereHas,這將只返回有1連接的圖像類型的用戶。

我也將確保在你的數據庫,你確實有用戶和它們所連接到的圖像以1圖像類型,這樣你肯定知道你應該得到的一些數據傳回。

添加額外的約束,你只是鏈子另一whereHas

User::with(['Images' => function($q) { 
    $q->where('type', 1); 
}])->whereHas('Images', function($q) { 
    $q->where('type', 1); 
})->whereHas('Roles', function($q) { 
    $q->where('id', 5); 
})->get(); 
+0

TNX先生的工作很好,我將投票並設置爲正確的,但請可以增加一個條款,我也有委託API訪問表的角色,所以我有透視表。我只想要一個角色= 5的子句。我是laravel的新手幫助 –