Php 使用具有Laravel';s雄辩的ORM:不是唯一的表别名?
我一直在尝试将Eloquent用于我正在制作的一个应用程序(受到Codeigniter的保护),但我无法让它工作 我有三张桌子: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非唯一
用户
部门
(这是查找表)部门成员
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'); } }
如果需要更多信息,我很乐意提供帮助。您的关系设置不正确。您不需要有成员模型,只需要一个用户和部门模型 像这样:
# 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使用它生成正确的查询,而不实际声明它(除了第二个参数)。我只需要定义起始表和结束表,而不是中间表。谢谢