php - 使用枢轴表进行 Eloquent 或查询构建器搜索

标签 php laravel laravel-4 eloquent

我表面上看起来是一个简单的要求-搜索位置等于$ locationId并具有特定服务($ serviceId)的所有配置文件,但是我不确定如何添加where条件通过数据透视表查询?

我的模型如下:

class Profile extends Model {

    public function services() {
        return $this->belongsToMany('Service', 'profile_services', 'profile_id', 'service_id');
    }

}

class Service extends Model {}

我想做的是遵循以下思路:
$results = Profile::where('location_id', '=', $locationId)->where('services.id', '=', $serviceId)->get();

注意我知道->where('services.id', '=', $serviceId)是不正确的(我将其放在此处以更好地解释我要实现的目标),但我想知道我会使用Eloquent或DB查询构建器来执行此操作。

最佳答案

您可以使用whereHas过滤关系

$results = Profile::where('location_id', '=', $locationId)
                  ->whereHas('services', function($query) use ($serviceId){
                      $query->where('services.id', '=', $serviceId);
                  })->get();

关于php - 使用枢轴表进行 Eloquent 或查询构建器搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27663560/

相关文章:

mysql - 使用 Laravel 4 和 mySQL 根据父记录检索所有子记录

php - Laravel 数据透视表和模型事件

php - Facebook 登录窗口出现和消失得非常快

php - 将每个请求路由到给定的 Controller ,除非指定了另一个 Controller

PhpStorm 中的 Laravel 4 Blade 标记和 Ide Helper

php - 如何构建一个查询 "get me all diplomas of which all steps are in this pivot table"?

laravel-4 - Laravel: Auth::attempt - 为什么身份验证失败?

php - 如何将 http 请求作为 curl 帖子?

php - 将多个文本文件及其标题导入 MySQL

javascript - 使用 Laravel 回显 vue.js 数据?