Laravel Eloquent在哪里与里面的关系

时间:2017-08-07 18:28:28

标签: php laravel eloquent

我有这样的关系结构:

放置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');
    }
}

由于

1 个答案:

答案 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的更多信息。