我有一个这样的模型:
class Event extends Eloquent
{
protected $softDelete = true;
public function scopeSearchEvents($search_criteria)
{
return Event::whereIn('title',$search_criteria)
->orWhereIn('description',$search_criteria)
->whereApproved('1')
->orderBy('event_date','desc')
->get();
}
}
我从控制器那里调用它:
$data = Event::search($search_criteria);
但它给出了这个错误:
Symfony \ Component \ Debug \ Exception \ FatalErrorException
Call to undefined method Illuminate\Events\Dispatcher::search()
从控制器调用自定义模型方法的最佳方法是什么?
答案 0 :(得分:0)
如下所示更改您的方法:
public function scopeSearchEvents($query, $search_criteria)
{
return $query->whereIn('title', $search_criteria)
->orWhereIn('description', $search_criteria)
->whereApproved('1')
->orderBy('event_date','desc');
}
然后将其称为searchEvents
而不是search
:
// Don't use Event as your model name
$data = YourModel::searchEvents($search_criteria)->get();
另外请确保您要使用whereIn
代替where('title', 'LIKE', "% $search_criteria")
等。
您应该将模型名称从Event
更改为其他任何内容,因为Laravel
具有核心Event
类,实际上是Facade
,其映射到{ {1}}。
答案 1 :(得分:0)