Laravel 多对多关联查询?

User::with('roles')->whereHas('roles', function($query) {

    $query->whereIn('role_id', [2,4]);

})->get();


慕婉清6462132
浏览 809回答 3
3回答

茅侃侃

查询『即是编辑又是特殊用户』,其实就是获取 role_id=2 和 role_id=4 的 user_id 的交集,用 SQL 可以写成:SELECT    user_idFROM    role_userWHERE    role_id IN (2, 4)GROUP BY    user_idHAVING    COUNT(user_id) = 2在 Laravel 中可以写成:User::with('roles')->whereHas('roles', function($query) {    $query->whereIn('role_id', [2, 4])          ->groupBy('user_id')          ->havingRaw('COUNT(user_id) = ?', [2]);})->get()

一只名叫tom的猫

只需要改写一下where条件就ok了User::with('roles')->whereHas('roles', function($query) {    $query->where('role_id', 2)        ->where('role_id', 4);})->get();

翻阅古今

或者试一下User::with('roles')->whereHas('roles', function($query) {    $query->where([['role_id', 2],['role_id',4]]);})->get();
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JQuery