【发布时间】:2014-03-17 00:54:44
【问题描述】:
我的这个控制器功能有问题。该函数采用可选的“搜索”参数,并使用它在雇主的可用工作中搜索关键字。当我调用此函数时,出现以下错误。
调用未定义的方法 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;
}
【问题讨论】:
-
提示:
>get();PS:还要考虑OR和AND的优先级 -
我必须在这里遗漏一些非常明显的东西。我环顾四周寻找涉及您的提示的解决方案,但似乎失败了。对不起布拉。
-
为什么你认为
$jobs必须有where或orWhere方法? -
是的,应该的。但是
$jobs对象没有where方法。当您执行if ($search)代码时 -$jobs已根据第一行中给出的查询进行过滤。 -
ohhhhhhhhhhhhhhh......为什么如果整个查询不是',你会调用一个执行数据库数据检索的
->get()方法吗?还没准备好?
标签: php search laravel undefined where