Laravel 远程一对多关系,中间表模型和关联模型不能是同一个模型
表结构如下:
用户- 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)
请问这种问题有好的解决办法吗?
推荐文章: