2016-08-09 6 views
0

でレガシー列を交換し、私は関係post.author_idでテキスト列post.authorを置き換えます。私は本当に古いDB</p> <p>と<strong>Yii2</strong>上のブログのアプリを持っている関係

サポートの理由から、古い列がアクティブです。ゲッターを使用して

今私は$post->author->nameを使用しようとすると、私は代わりに、関係の、最初の文字列の列を取得...
$post->getAuthor()->name正常に動作しますが、これは維持するのは難しいだろう。

このためのいくつかの標準液をpost.author財産、 を無視し、代わりに、著者関係を優先するように、ありますか?

答えて

1

リレーションの名前を変更できます。あなたはgetPostauthorにメソッドgetAuthorの名前を変更する場合は関係プロパティがpostauthor(自動的)になり、あなたは$post->postauthor->name

1
  1. $ポスト> GETAUTHOR()ActiveQueryを返し、あなたは$ポスト> GETAUTHORを行うことはできません経由で取得することができます() - >名前です。
  2. あなたのモデルにゲッターを追加する可能性があります。

    パブリック関数getAuthorName(){$ の作者= $ポスト> GETAUTHOR() - > 1(); は$ authorを返しますか? $ author-> name:null; }

  3. または、リレーションの名前を変更します。