2016-05-17 6 views
3

Kann ich den Spaltennamen und den Beziehungsnamen gleich haben?Laravel Spaltenname und Beziehungsname gleich

Beispiel:

ich eine Spalte edited_by in mack.php habenModell und ich möchte alle Einzelheiten über Benutzer in edited_by Tabelle von den Benutzern, so habe ich Beziehung wie unten erwähnt

bekommen
public function edited_by(){ 
     return $this->hasOne('App\User','id','edited_by'); 
    } 

jetzt, wenn ich versuche, auf $ model-> edited_by-> first_name seine werfen Fehler 'versucht, die Eigenschaft von Nicht-Objekt'

gibt es eine Möglichkeit, es anders als mit anderen Namen zu beheben?

Antwort

2

Die kurze Antwort ist keine. Sie können nicht denselben Namen haben, da die Spalte immer zurückgegeben wird, wenn sie gefunden wird, und die Beziehung wird nie zurückgegeben, wenn eine Spalte mit diesem Namen gefunden wird.

Das Ändern des Spaltennamens in user_id wäre geeigneter als edited_by. Es ist anschaulicher und es ist auch die Standard-ID, nach der Eloquent sucht. Ähnlich macht der Beziehungsname mehr Sinn, wenn er user() anstelle von edited_by() benannt wird, weil es ein Benutzermodell zurückgibt.

Die etwas längere und völlig falsche Antwort ist, dass Sie auf die Beziehung mit zugreifen können $ model-> edited_by() -> Vorname dies führt dazu, dass zusätzliche Abfragen unnötig ausgeführt werden.

+3

Was mehr ist: PSR-1 Standards besagt, dass jede Methode camelCase sein sollte und mysql guide sagt, dass Sie Unterstreichung für mehrere_keywords_columns verwenden sollten. Also im Grunde können Sie 'editedBy()' Methode und 'edited_by' sql Spalte zusammen verwenden. Quellen: http://www.sqlstyle.guide/, https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-1-basic-coding-standard.md –