laravel 远程关联一对一中间表和目标表是同一个表

user 员工表

id
level 等级(普通员工、小组长)
name
leader_id (组长id)

goods 商品表

id
name
user_id 员工id

现在要获取商品属于那个小组长管理

public function leader()
    {
        return $this->hasOneThrough(
            'App\Models\User',
            'App\Models\User',
            'id', // 员工(普通员工)表外键...
            'id', // 员工(组长)表外键...
            'user_id', // 商品表本地键...
            'leader_id' // 员工(普通员工)表本地键...
        );
    }

Syntax error or access violation: 1066 Not unique table/alias: ‘user’ (SQL: select user.*, user.id as laravel_through_key from user inner join user on user.leader_id = user.id and user.id = 428 )

关联一直报错,有没有遇到这种问题的

《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
最佳答案

同上,建议一对一关联,goods -> user -> leader

// 商品模型
class Goods {
    public function user() {
        return $this->belongsTo('App\Models\User', 'user_id');
    }
}

// 用户模型
class User {
    public function leader() {
        return $this->belongsTo('App\Models\User', 'leader_id');
    }
}

// 商品获取用户
$goods->user;

// 商品获取用户对应小组长
$goods->user->leader;
2年前 评论
讨论数量: 3

你另外一个join的 user要用别名。2个user表名重复了

2年前 评论

这种情况直接一对一不行吗 :cry:

2年前 评论

同上,建议一对一关联,goods -> user -> leader

// 商品模型
class Goods {
    public function user() {
        return $this->belongsTo('App\Models\User', 'user_id');
    }
}

// 用户模型
class User {
    public function leader() {
        return $this->belongsTo('App\Models\User', 'leader_id');
    }
}

// 商品获取用户
$goods->user;

// 商品获取用户对应小组长
$goods->user->leader;
2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!