Laravel 遠端一對多關係,中間表模型和關聯模型不能是同一個模型

發表於2022-08-27

表結構如下:
使用者- users: id,
回覆- replies: id, user_id, parent_id,
parent_id 是這條回覆所回覆的回覆物件的id。
user_id 是這條回覆的使用者id。

現在想取得id為1的使用者所有給他的回覆所有回覆。這樣就構成了遠端一對多的關係。

User中:

 public function receivedReplies()
    {
        return $this->hasManyThrough(Reply::class, Reply::class, 'user_id', 'parent_id');
    }

遠端一對多的關係定義沒有問題。但是,遠端一對多中中間表和關聯表一樣,生成sql語句中的jion沒有重新命名錶,導致兩個同表名衝突。報的錯誤如下:

SQLSTATE[42000]: Syntax error or access violation: 1066 Not unique table/alias: 'replies' (SQL: select count(*) as aggregate from `replies` inner join `replies` on `replies`.`id` = `replies`.`parent_id` where `replies`.`user_id` = 1 and `user_id` <> 1)

請問這種問題有好的解決辦法嗎?

相關文章