簡體   English   中英

Laravel 與遞歸表的多對多關系

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM