在 laravel 中使用 eloquent 编写查询
write a query with eloquent in laravel
如何使用 Eloquent 模型编写此查询?我需要获得具有管理员或卖家角色的用户。
$users = DB::table('users')
->where('users.verified' , 1)
->join('role_user' , 'role_user.user_id' , '=' , 'users.id')
->join('role' , 'role_user.role_id' , '=' , 'role.id')
->where('role.title' , 'seller')
->orWhere('role.title' , 'admin')
->get();
型号
class User extends Model
{
public function role()
{
return $this->belongsToMany(Role::class);
}
}
class Role extends Model
{
public function users()
{
return $this->belongsToMany(User::class);
}
}
如果您想使用 Eloquent,并查询任何实体以 return 仅在存在关系且满足条件的情况下获得结果,您可以使用带有子查询的 whereHas() 方法。
User::where('verified', 1)
->whereHas('role', function($query) {
$query->whereIn('title', ['seller', 'admin']);
})->get();
这是相同的语法,具体取决于您想要在顶层使用的实体。
Role::whereIn('title', ['seller', 'admin'])
->whereHas('users', function($query) {
$query->where('verified', 1);
})->get();
如何使用 Eloquent 模型编写此查询?我需要获得具有管理员或卖家角色的用户。
$users = DB::table('users')
->where('users.verified' , 1)
->join('role_user' , 'role_user.user_id' , '=' , 'users.id')
->join('role' , 'role_user.role_id' , '=' , 'role.id')
->where('role.title' , 'seller')
->orWhere('role.title' , 'admin')
->get();
型号
class User extends Model
{
public function role()
{
return $this->belongsToMany(Role::class);
}
}
class Role extends Model
{
public function users()
{
return $this->belongsToMany(User::class);
}
}
如果您想使用 Eloquent,并查询任何实体以 return 仅在存在关系且满足条件的情况下获得结果,您可以使用带有子查询的 whereHas() 方法。
User::where('verified', 1)
->whereHas('role', function($query) {
$query->whereIn('title', ['seller', 'admin']);
})->get();
这是相同的语法,具体取决于您想要在顶层使用的实体。
Role::whereIn('title', ['seller', 'admin'])
->whereHas('users', function($query) {
$query->where('verified', 1);
})->get();