2016-08-09 7 views
0

Ich habe einen Blog-App auf Yii2 mit einem wirklich alten DBmit einer Beziehung

I ersetzt die Textspalte post.author mit einer Beziehung post.author_id.

Aus Support-Gründen ist die alte Spalte aktiv.

Jetzt, wenn ich versuche $post->author->name zu verwenden, bekomme ich die String-Spalte zuerst anstelle der Beziehung ...
den Getter Mit funktioniert $post->getAuthor()->name, aber das wird schwer zu halten sein.

Gibt es eine Standardlösung für diese zu ignorieren, die post.authorEigenschaft, und der Autor Beziehung anstatt zu begünstigen?

Antwort

1

Sie könnten die Beziehung umbenennen. Wenn Sie die Methode getAuthor zu getPostauthor die Beziehung Eigenschaft umbenennen wird postauthor werden (automatisch), und Sie können es abholen über $post->postauthor->name

1
  1. post- $> getAuthor() gibt ActiveQuery und Sie können $ post-> getAuthor nicht tun() -> Name.
  2. Sie können Getter zum Modell hinzufügen:

    public function getAuthorName() { $ author = $ post-> getAuthor() -> ein(); zurückgeben $ Autor? $ author-> name: null; }

  3. Oder benennen Sie die Beziehung um.

Verwandte Themen