Laravel 5のリレーション値を簡単に取得する可能性はありますか? ここに私が必要とする例があります:Laravelネストされたリレーション値を取得
私はモデルBook
を持っています。との関係はauthor
です。 Author
も、モデルCountry
との関係country
を持っています。著者の書籍ページの国名に表示する必要があります。私は簡単に書くことができます:
echo $model->author->country->name
しかし、本の著者は提供されていないか、著者coutryを知らない場合はどうなりますか?私は通知を得ます。
だから私は、追加checkingsを追加する必要があります。
if ($model->author && $model->author->country) echo $model->author->country->name
はたぶん値を取得簡素化laravelでいくつかの方法が、存在しますか? SomeHelperClass::getValue($model, 'author.country.name')
のようなものなので、チェーンの一部がnull
の場合は、null
も返されます。ありがとう。
あなたがブックにメソッド$ Book-> COUNTRYNAMEを()を追加していけないのはなぜならば、国の名前を返す存在する場合、それは作者をチェックしましたnullまたは空の文字列を返しません。言い換えれば:そのメソッドで国名を取得するロジックをラップします。 –
@DavidLavieri似たような状況がたくさんあり、それぞれのチェックを別々の方法でラップするのは賢明ではないためです。 – f0rtis
SomeHelperClass :: getValue($ model、 'author.country.name')は、ラッパーと抽象概念がそうであるように、カバーの後ろにあるデータベースへのラッパーとチェックまたは実際の照会になるでしょう... abstracts –