Lösung der ursprünglichen Frage
Sie haben eine nicht statische Methode statisch aufgerufen. Um eine öffentliche Funktion im Modell statisch zu machen, würde dies folgendermaßen aussehen:
public static function {
}
Im Allgemeinen:
Post::get()
In diesem speziellen Fall:
Post::take(2)->get()
Eine Sache, auf die ich beim Definieren von Beziehungen und Umfang achten muss, dass ich ein Problem hatte, das dazu führte, dass ein Fehler "Nicht statische Methode sollte nicht statisch aufgerufen werden" ist, ist, wenn sie den gleichen Namen haben, zum Beispiel:
public function category(){
return $this->belongsTo('App\Category');
}
public function scopeCategory(){
return $query->where('category', 1);
}
Wenn ich Folgendes mache, erhalte ich den nicht statischen Fehler:
Event::category()->get();
Das Problem ist, dass Laravel meine Beziehungsmethode "Kategorie" anstelle meines Kategoriebereichs (scopeCategory) verwendet. Dies kann durch Umbenennen des Bereichs oder der Beziehung behoben werden. Ich habe beschlossen, die Beziehung umzubenennen:
public function cat(){
return $this->belongsTo('App\Category', 'category_id');
}
Bitte beachten Sie, dass ich den Fremdschlüssel (category_id) definiert habe, da Laravel sonst stattdessen nach cat_id gesucht hätte und ihn nicht gefunden hätte, da ich ihn in der Datenbank als category_id definiert hatte.
$obj->getAll()
oder machen Sie die Funktion statisch.