【问题标题】:Laravel 3 Many to Many relationship not binding queryLaravel 3多对多关系不绑定查询
【发布时间】:2013-02-18 14:03:25
【问题描述】:

我正在处理多对多关系的文档,并且遇到了各种各样的砖墙。我正在尝试使用现有的数据库模式并将 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');
   }
}

DB::profile() 输出

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"
  }
}

结果查询很好。如果我直接在我的服务器上运行它,它会返回两个用户 ID = 1 的组。绑定没有发生,我不确定这是一个错误还是我在滥用 Eloquent。

谢谢!

【问题讨论】:

    标签: php laravel eloquent laravel-3


    【解决方案1】:

    Laravel 通常将键小写。我建议在您的模型中将所有 UserIDRoleID 实例小写并从那里开始工作。

    如果您正在设计与 Laravel 一起使用的数据库,则旨在使用小写的表名和列名(如果您使用的是现有数据库,您可能别无选择,我很感激)。

    -- 菲尔火花

    【讨论】:

      猜你喜欢
      • 2018-11-02
      • 2015-05-29
      • 1970-01-01
      • 2020-12-15
      • 1970-01-01
      • 1970-01-01
      • 2019-01-04
      • 2019-02-07
      • 2017-11-03
      相关资源
      最近更新 更多