【问题标题】:write a query with eloquent in laravel在 laravel 中用 eloquent 写一个查询
【发布时间】:2017-10-10 11:40:19
【问题描述】:

如何使用 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);
    }
}

【问题讨论】:

    标签: php laravel eloquent query-builder


    【解决方案1】:

    如果您想使用 Eloquent,并查询任何实体以仅返回存在关系且满足条件的结果,您可以使用带有子查询的 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();
    

    【讨论】:

      猜你喜欢
      • 2019-09-21
      • 1970-01-01
      • 2015-10-19
      • 2020-01-31
      • 2021-11-06
      • 2020-01-23
      • 1970-01-01
      • 2017-10-22
      • 2021-04-19
      相关资源
      最近更新 更多