【发布时间】:2015-05-05 13:46:40
【问题描述】:
我有一个方法可以根据join 和where 子句返回省份列表。我遇到的问题是laravel 抛出一个异常,告诉有一个名为whereIn 的未定义方法。但是Eloquent 中存在whereIn 方法。我应该如何在连接上使用whereIn 方法?
public static function getProvinces($IDs = array()){
$query =
DB::Table('doctors')
->join('users', function($join){
$join->on('users.id', '=', 'doctors.user_id')
->whereIn('users.status_id', array(3,4,7));
})
->join('contacts', function($join){
$join->on('doctors.id', '=', 'contacts.doctor_id')
->where('contacts.type_id', '=', 1);
})
->join('provinces', 'contacts.province_id', '=', 'provinces.id')
->select('contacts.province_id as id','provinces.name as name',DB::raw("COUNT('contacts.province_id') as count"))
->groupBy('contacts.province_id');
if(!empty($IDs))
$query->whereIn('doctors.id', $IDs);
return $query->get();
}
感谢您的帮助。
【问题讨论】:
-
1. 您不是在使用 Eloquent,而是直接使用 QueryBuilder-class。 2.:
$join不是 QueryBuilder 类型,而是 Illuminate\Database\Query\JoinClause 类型,它没有whereIn方法。
标签: php mysql sql laravel eloquent