多態性関係を使用するGallery
テーブルがありますので、Images
とVideos
をギャラリーリストに追加できます。Laravel:多態性の関係+アクセサ
またはApp\Image
のいずれかが入力されたgalleryable_type
列があります。
私は私が扱ってるものをギャラリーアイテムタイプを決定するので、私はJSでその列を使用することができますいずれかvideo
またはimage
からgalleryable_type
の値を変更するには、アクセサ(ドキュメントhere)を使用するための方法はありますか?
私は次のことを試してみました:
/**
* Get and convert the makeable type.
*
* @param string $value
* @return string
*/
public function getMakeableTypeAttribute($value)
{
return str_replace('app\\', '', strtolower($value));
}
をしかし、私は次のエラーで終わる:
FatalErrorException in Model.php line 838:
Class '' not found
Iが多型の前に処理されていることをアクセサに関係していると仮定しています私は確信していません。
私は単に私のコントローラで次のように使用することができます。
foreach (Gallery::with('galleryable')->get() as &$gallery) {
$gallery->galleryable_type = str_replace('app\\', '', strtolower($gallery->galleryable_type));
}
しかし、それは物事の危険な方法のように思えます。ラーヴェルの教祖がこの問題に取り組む最善の方法を明らかにしたのだろうか?
ありがとうございます!
素晴らしい情報に感謝を! –
注:Laravel 5.3では代わりに[morphMap](https://www.laravel.com/docs/5.3/eloquent-relationships#polymorphic-relations)を使用してください。 – tyteen4a03
はい、L5.3ではtrueですが、この回答は現実的なものより前にmorphMapを持っています。私は自分のエントリーを再編集します。 –