我有这样的关系结构:
放置hasMany
服务
Service
belongsTo
ServiceType
我正在尝试按ServiceType
过滤它,但我总是在尝试使用各种类型表示该表或视图不存在时出错。
$place = Place::with('services.serviceTypes')->whereIn('id', $ids)
->where('services.serviceTypes.id', $id)->get();
或
$place = Place::with('services.serviceTypes')->whereIn('id', $ids)
->where('services.service_types.id', $id)->get();
返回相同的异常。
型号:
地点:
namespace App;
use Illuminate\Database\Eloquent\Model;
class Place extends Model {
public function services(){
return $this->hasMany('App\Service');
}
}
服务:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Service extends Model {
public function serviceType(){
return $this->belongsTo('App\ServiceType');
}
}
的ServiceType:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class ServiceType extends Model {
public function services() {
return $this->hasMany('App\Service');
}
}
由于
答案 0 :(得分:1)
要查询关系,您需要使用可用的特定功能。您正在寻找whereHas()
方法。
$place = Place::with('services.serviceTypes')
->whereIn('id', $ids)
->whereHas('services.serviceTypes', function ($query) use ($id) {
return $query->where('id', $id);
})
->get();
您可以阅读有关querying relationships here的更多信息。