我有三个表如下:
id |名称|用户名|密码
id |名称
id |用户id |角色id
这些表通过belongtomany进行通信。我想找到一种方法来选择“users”表中的所有数据,除了表“users\u roles”中“role\u id”的用户值为5的数据之外。我怎么做?
您应该使用whereDoesntHave()
选择没有满足特定条件的相关模型的模型:
$users = User::whereDoesntHave('roles', function($q){
$q->where('role_id', 5);
})->get();
使用Laravel的查询生成器:
<?php
$users = DB::table('users')
->leftJoin('users_roles', 'user.id', '=', 'users_roles.user_id')
->where('users_roles.role_id', '!=', 5)
->get();
http://laravel.com/docs/4.2/queries
或者直接使用雄辩:
<?php
$users = User::whereHas('users_roles', function($q)
{
$q->where('role_id', '!=', 5);
})->get();
http://laravel.com/docs/4.2/eloquent#querying-关系
<?php
$users = User::whereHas('roles', function($query) {
$query->where('id', '<>', 5);
})
->orHas('roles','<', 1)
->get();