我在此控制器功能中遇到问题。该功能采用可选的“搜索”功能。参数并使用它来搜索雇主可用的关键字作业。当我调用此函数时,我收到以下错误。
调用未定义的方法Illuminate \ Database \ Eloquent \ Collection :: where()
这是我的相关代码。任何建议将不胜感激!
路线:(前缀:' / api / v1 /')
Route::get('employer/{employerId}/jobs', 'EmployersController@getJobs');
控制器:
public function getJobs ($employerId) {
$search = Input::get('query');
$jobs = Job::getAvailableByEmployer($employerId, $search);
return $jobs;
}
型号:
public static function getAvailableByEmployer($employerId, $search=NULL)
{
$jobs = Job::where('jobs.employer_id', '=', $employerId)
->where('jobs.status', '=', 'Available')
->orderBy('jobs.created_at', 'desc')
->get();
if ($search)
{
$jobs->where('title', 'LIKE', '%'. $search .'%')
->orWhere('description', 'LIKE', '%'. $search .'%');
}
return $jobs;
}
答案 0 :(得分:1)
让你的功能如下:
public function scopeGetAvailableByEmployer($query, $employerId, $search=NULL)
{
$query->where('employer_id', '=', $employerId)
->where('status', '=', 'Available')
->orderBy('created_at', 'desc');
if ($search)
{
$jobs->where('title', 'LIKE', '%'. $search .'%')
->orWhere('description', 'LIKE', '%'. $search .'%');
}
return $query;
}
现在称之为(scope
让您静态调用):
$jobs = Job::getAvailableByEmployer($employerId, $search)->get();
另请记住,一旦您拨打get()
,您就无法进行任何查询,因为这不再是Query Builder
,而是Collection
对象。