2016-10-11 5 views
0

ここでの目標は、それぞれの関連する子と子の関連ページでツリーを作成することです。Laravelネストされたリレーションシップは、各レベルのクエリにドットシンタックスを使用しています。

public static function tree() 
{ 
    return static::with(implode('.', array_fill(0, 100, 'children')))->with('Pages')->where('parent_id', '=', 0)->get(); 
} 

私はこのように私のモデルとツリーを生成しています

...しかし、問題は、ページに関連する各チャイルズを得ることが付属しています。 私はこれを試してみた...

return static::with([implode('.', array_fill(0, 100, 'children')) => function($query) { 
     $query->with('Pages'); 
    }])->with('Pages')->where('parent_id', '=', $id)->get(); 

とイーガーローディングクエリを追加すると動作するようには思えませんでした。私は多分ドットのsytaxを使用して、それが最後のものだけを照会することを照会すると思いますか?私はそれについては分かりません。

私はクエリの各レベルをクエリする必要がありますが、私はどのようにわかりません。 ご協力いただければ幸いです!

答えて

0

UPDATE:

public static function genRelationalArray() 
{ 
$arr = [implode('.', array_fill(0, 100, 'children'))]; 
    for($i = 0; $i < 10; $i++) { 
     $item = 'children.Pages'; 
     $arr[] = $item; 
     $item = 'children.'. $item; 
    } 
    return $arr; 
} 

public static function treeFromId($id) 
{ 
    $childArr = static::genRelationalArray(); 
    return static::with($childArr)->with('Pages')->where('parent_id', '=', $id)->get(); 
} 

...私はこれを行うことにより、この問題を解決するために管理してきたようだが、これを行うの短い方がより効率的な方法があるかどうか:)

を投稿してください
関連する問題