[英]Laravel Many-to-Many relationship with recursive table
我有多對多關系表,其中一個表codes
是遞歸的。 我關心的是,如何顯示只是關系一部分的遞歸表。 我顯示這個沒有問題,但問題是它顯示了所有孩子。
tables table_has_codes codes
----------------- ----------------- ----------------------
id | name table_id| code_id id | name | code_parent_id
----------------- ----------------- ----------------------
1 | table_1 1 | 1 1 | A | null
1 | 2 2 | B | 1
1 | 3 3 | C | 2
4 | D | 3
----------------- ----------------- --------------------------
所以在 model Code
public function children()
{
return $this->hasMany(self::class, 'code_parent_id')->with('children');
}
我的查詢是
Table::with('codes.children')
->whereId(1)
->first()
我的預期結果是
1 - A
1.1 - B
1.1.1 - C
但我得到了什么
1 - A
1.1 - B
1.1.1 - C
1.1.1.1 - D
我知道這里應該有額外的查詢,我只是不知道怎么做。 我沒有在模型中包含所有代碼,但我認為這很清楚。
在 Laravel 中使用Database Query Builder您可以實現預期的 output。 代碼如下所示。
DB::table('tables')
->join('table_has_codes', 'tables.id', 'table_has_codes.table_id')
->join('codes', 'table_has_codes.code_id', 'codes.id')
->select('codes.id as id', 'codes.name as name', 'codes.code_parent_id as parent_id')
->get();
但是還有另一種替代方式。 這是Eloquent ORM檢查鏈接以獲取更多信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.