Laravel范围方法检查其他表?

时间:2017-06-21 18:09:27

标签: php laravel laravel-5 laravel-5.4

我有3个模型,Customer,Service和ServiceElement

我的模范客户范围:

public function scopeServicesExternal($query, $customer_id, $service_id){
        return $query->where('customer_id', $customer_id)->where('service_id', $service_id);
}

这个范围为我提供了服务的所有结果,这没关系。但是有可能扩展它以获得仅在模型ServiceElement中字段代理不为空的元素吗?

2 个答案:

答案 0 :(得分:2)

如果服务器具有为service元素定义的关系,则可以执行以下操作:

->whereHas('serviceElement', function($query) {
    return $query->where('field_agent', '!=', '');
});

仅返回具有serviceElement记录且field_agent列不为空的模型。

使用您在模型文件中定义关系时替换serviceElement

答案 1 :(得分:0)

如果您使用Eloquent关系,则不需要传递customer_id和service_id作为参数。