没有获得雄辩的多对多逆

时间:2016-02-15 07:57:13

标签: php laravel eloquent

我有2个模型,即角色和用户模型。每个型号分别使用以下代码:

Role.php:

public function users(){
    return $this->belongsToMany('\Models\User', 'rbac_user_roles','role_id','username');
}

...

user.php的:

public function roles(){
    return $this->belongsToMany('\Models\RBAC\Role', 'rbac_user_roles','username','role_id');
}

但是当我尝试像这样转储数据时:

$model = Role::find( 1);
$model2 = User::find( 'test_user');

var_dump( $model->users->toArray() );
var_dump( $model2->roles->toArray() );

$ model-> users-> toArray()查找实际数据,而$ model2-> roles-> toArray()则不返回任何内容。这很奇怪,因为我非常确定代码是否正常工作。 有了这个,我想问一下,如果数据库的主键是一个雄辩的字符串会有效吗?因为我相信这是罪魁祸首。如果是这样,我该怎么做才能纠正这种情况呢?

情况需要/具备以下条件 - >无法为users表添加用于索引启用自动增量键的新列 - >所有表和数据都已正确设置,因为第一个var_dump()实际转储了正确的数据。

谢谢,

编辑:

我在尝试获取用户时也尝试了以下内容:

$model2 = User::where( 'username', 'test_user')->get()->first();

注意:表Users的主键是字符串

1 个答案:

答案 0 :(得分:0)

显然,Eloquent对非增量主键非常严格。您应该在Eloquent模型中将增量属性设置为false,如:

public $incrementing = false;