我正在处理多对多关系的文档,并遇到了各种各样的问题。我正在尝试使用现有的数据库模式并围绕它包装Laravel / Eloquent,这需要教授Eloquent关于不同的外键字段。下面是我的两个模型以及DB :: profile()的结果,它显示了查询的输出。请注意,它成功构建了查询,但UserID未绑定到它。
在我的代码中,我将模型称为User :: find(1) - > roles。我期望为该特定用户获得一系列角色,但它是空的。
class User extends Eloquent
{
public static $table = 'GDN_User';
public static $key = 'UserID';
public function roles()
{
return $this->has_many_and_belongs_to('role', 'GDN_UserRole', 'UserID', 'RoleID');
}
}
class Role extends Eloquent
{
public static $table = 'GDN_Role';
public static $key = 'RoleID';
public function users()
{
return $this->has_many_and_belongs_to('user', 'GDN_UserRole', 'RoleID', 'UserID');
}
}
array(2) {
[0]=>
array(3) {
["sql"]=>
string(51) "SELECT * FROM `GDN_User` WHERE `UserID` = ? LIMIT 1"
["bindings"]=>
array(1) {
[0]=>
int(1)
}
["time"]=>
string(4) "4.04"
}
[1]=>
array(3) {
["sql"]=>
string(367) "SELECT `GDN_Role`.*, `GDN_UserRole`.`id` AS `pivot_id`, `GDN_UserRole`.`created_at` AS `pivot_created_at`, `GDN_UserRole`.`updated_at` AS `pivot_updated_at`, `GDN_UserRole`.`UserID` AS `pivot_UserID`, `GDN_UserRole`.`RoleID` AS `pivot_RoleID` FROM `GDN_Role` INNER JOIN `GDN_UserRole` ON `GDN_Role`.`RoleID` = `GDN_UserRole`.`RoleID` WHERE `GDN_UserRole`.`UserID` = ?"
["bindings"]=>
array(1) {
[0]=>
NULL
}
["time"]=>
string(4) "0.10"
}
}
结果查询很好。如果我直接在我的服务器上运行它,它返回UserID = 1的两个组。绑定没有发生,我不确定这是一个错误还是我滥用Eloquent。
谢谢!
答案 0 :(得分:1)
Laravel经常降低键。我建议您在模型中小写所有UserID
和RoleID
的实例并从那里开始工作。
如果您正在设计与Laravel一起使用的数据库,目的是使用小写的表和列名称(如果您使用的是现有数据库,我感谢您,您可能没有选择)。
- PhillSparks