Laravel: belongsTo() Beziehung übernimmt eins-zu-viele-Beziehung anstelle von eins-zu-eins

Bin ich mit einem langwierigen problem mit Laravel ist ORM.

Habe ich ein Modell mit mehreren Beziehungen, so wie hier:

class Pages extends Eloquent {

    protected $guarded = array('id','config_id');

    public function template()
    {
        return $this->belongsTo('Templates', 'templates_id');
    }

    public function updateUser()
    {
        return $this->belongsTo('Users', 'updated_by');
    }

Kann ich jetzt auf die Vorlage zugreifen, verwandten Artikel in einer einfachen Art und Weise, wie diese:

$this->template->name;

Und es funktioniert out-of-the bat, weil Laravel ORM ' s davon ausgegangen, dass es eine eins-zu-eins-Beziehung und ruft intern die ersten () - Methode.

Aber wenn ich versuche, das gleiche mit updateUser es schlägt fehl und ein Fehler ausgegeben, der besagt, dass es nicht mehr als Namen auf einem nicht-Objekt.

Aber wenn ich es versuchen:

$this->updateUser()->first()->name;

es funktioniert, aber es fühlt sich nicht richtig an für mich.

Also meine Frage ist, wie Laravel ORM ' s entscheiden, wenn eine definierte Beziehung mit belongsTo() ist eins-zu-eins-oder eins-zu-viele? Gibt es eine Möglichkeit zu zwingen, brauchte Verhalten?

Dank

  • verwenden Sie hasOne() um die Beziehung anderswo? und Sie haben, Lesen Sie die Dokumentation?
  • Ja, ich habe die Dokumentation Lesen. Ich habe nicht hasOne() anderswo, weil ein einzelner Benutzer kann den updater von vielen Seiten, es ist eine eins-zu-viele-Beziehung aus der Sicht der Nutzer, aber eins-zu-eins von einer Seite ein.
InformationsquelleAutor Ingro | 2013-07-12
Schreibe einen Kommentar