私は動的であることを意図したコンテンツモデルの関係を持っています。私はポストタイプとしてコンテンツモデルを使用しています。データベース内の各モデルは、コンテンツタイプの実際のコンテンツであるモデルにリダイレクトするモデル値を持ちます。これは後でコンポーザパッケージを使用してインストールすることができます。Laravel:モデル内の動的関係
public function contents() {
return $this->hasMany($this->model);
}
それは私が私の見解では、この関係を使用
$type->contents
に動作しますが、私は私のコントローラで、この関係をeagerloadしたいとき。
$types = Content::with('contents')->get();
私はこれが動作しない理由を把握または私は同じことを実現することができる方法の選択肢を考えるのはまだだエラーに
FatalThrowableError in Model.php line 844: Class name must be a valid object or a string
を取得します。これがはっきりしない場合、私は詳細を提供することができます。前もって感謝します!
更新日(私が思いついた一時的/永久的な解決策) 私は関係を削除してこれに置き換えました。
public function getContentsAttribute() {
$items = $this->contents_type::with('user')->get();
return $items;
}
てみました。: パブリック関数の内容(){ リターンの$ this - > hasManyの( 'アプリケーション\モデル\コンテンツ'); } – Trick
はい私は1つのタイプのコンテンツしか持っていなかった場合、現在私のコンテンツタイプはページと投稿です。これらはそれぞれモデル値Socms \ Content \ PageとSocms \ Content \ Postでコンテンツテーブルに表示されます。 - > http://i.imgur.com/ByE2pT5.png –
この 'return $ this-> hasMany(self :: $ modelClass);'パラメータを静的にしてみてください! '$ modelClass'をセットすることを忘れないでください! –