解决原始问题
您静态调用了一个非静态方法。要使公共函数在模型中静态化,将如下所示:
public static function {
}
一般来说:
Post::get()
在这种情况下:
Post::take(2)->get()
在定义关系和范围时要注意的一件事是,我将其命名为相同时导致“非静态方法不应静态调用”错误,例如:
public function category(){
return $this->belongsTo('App\Category');
}
public function scopeCategory(){
return $query->where('category', 1);
}
当我执行以下操作时,我得到了非静态错误:
Event::category()->get();
问题是,Laravel正在使用我的称为类别的关系方法,而不是类别范围(scopeCategory)。这可以通过重命名作用域或关系来解决。我选择重命名该关系:
public function cat(){
return $this->belongsTo('App\Category', 'category_id');
}
请注意,我定义了外键(category_id),因为否则Laravel会查找cat_id,而不会找到它,因为我在数据库中将其定义为category_id。
$obj->getAll()
或使函数静态。