2017-02-17 14 views
2

"要素"を含む "領域"というLaravelモデルがあります。 要素は異なるモデル(この場合はFreetextElementとCheckboxElement)になります。全体が、多形ピボットテーブル で結ばれています。このテーブルには、area_id、element_id、およびelement_typeが含まれています。 基本的な関係は正常に動作します。 例えば私が言う場合:Laravel異なるモデルを取得する多形関係

$area->freetextElements 

は、それから私は、その特定の領域に接続されているすべてのfreetextElementsを取得します。 私の問題は、モデルに関係なく、領域にアタッチされているすべての要素を取得する関係関数が欲しいということです。ここで

は、エリアの関係です:

public function freetextElements() 
{ 
    return $this->morphedByMany(ElementFreetext::class, 'element', 'coaching_element_area_element'); 
} 

public function checkboxElements() 
{ 
    return $this->morphedByMany(ElementCheckbox::class, 'element', 'coaching_element_area_element'); 
} 

//find a better solution for this 
public function elements() 
{   
    return array_merge($this->freetextElements->all(), $this->checkboxElements->all()); 
} 

最後の機能「の要素は、」ちょうど私が達成しようとしているものを説明することです。

提案がありますか?前もって感謝します。

よろしくお願いします。

答えて

0

この問題の解決策を見つけました。最もクリーンなソリューションではありません。 私はまだ追加のフィードバックをお待ちしていますが、私はこれを他の人のために残しておくと思いました。

私は単純にピボットテーブルエントリのモデルを作成しました。 Area-> Elementsはピボットテーブルのエントリとの関係であり、ピボットテーブルモデルはそれ自身の関係を介して個々の要素に関連しています。今度は、関係を「Area-> Elements-> Element」と繋げることができます。それは最適ではありませんが、それは仕事を完了します。

関連する問題