Php 使用具有Laravel';s雄辩的ORM:不是唯一的表别名?

Php 使用具有Laravel';s雄辩的ORM:不是唯一的表别名?,php,laravel,eloquent,Php,Laravel,Eloquent,我一直在尝试将Eloquent用于我正在制作的一个应用程序(受到Codeigniter的保护),但我无法让它工作 我有三张桌子: 用户 部门 部门成员(这是查找表) department\u members有3个字段:id、department\u id和user\u id。我的所有表都有自己的模型。当我尝试使用ORM获取用户的部门时(user::find(1)->member()->first()),我得到的只是以下错误: SQLSTATE[42000]:语法错误或访问冲突:1066非唯一

我一直在尝试将Eloquent用于我正在制作的一个应用程序(受到Codeigniter的保护),但我无法让它工作

我有三张桌子:

  • 用户
  • 部门
  • 部门成员
    (这是查找表)
department\u members
有3个字段:id、department\u id和user\u id。我的所有表都有自己的模型。当我尝试使用ORM获取用户的部门时(
user::find(1)->member()->first()
),我得到的只是以下错误:

SQLSTATE[42000]:语法错误或访问冲突:1066非唯一表/别名:“用户”

虽然我知道问题是什么,但我不知道如何解决它,因为它都是由ORM生成的

模型:

  • 成员模型

    class Member extends Eloquent {
        public static $table        = 'department_members';
        public static $timestamps   = false;
    
        public function user() {
            return $this->has_many_and_belongs_to('User', 'users');
        }
    }
    
  • 用户模型

    class User extends Eloquent {
        public static $timestamps = false;
    
        public function member() {
            return $this->has_many_and_belongs_to('Member', 'department_members');
        }
    }
    
  • 部门模式

    class Department extends Eloquent {
        public function member() {
            return $this->has_many_and_belongs_to('Member', 'department_members');
        }
    }
    
这些列具有适当的名称:id作为PK,以及附加了_id的相应名称


如果需要更多信息,我很乐意提供帮助。

您的关系设置不正确。您不需要有成员模型,只需要一个用户和部门模型

像这样:

# in User
public function departments() {
    return $this->has_many_and_belongs_to('Department', 'department_members');
}

# in Department
public function users() {
    return $this->has_many_and_belongs_to('User', 'department_members');
}

不需要额外的型号。此外,您可能想在这里阅读:-特别注意的是数据透视表,以防您想在关系的联接表方面做一些额外的工作。

确切地说-
department\u members
是我的数据透视表,Eloquent使用它生成正确的查询,而不实际声明它(除了第二个参数)。我只需要定义起始表和结束表,而不是中间表。谢谢