我尝试使用Eloquent在Laravel中定义一个n:m关系。我给出了以下表格:
用户:
事
users_things
在我的用户模型中,我定义了以下函数
public function things() {
return $this->hasMany('App\Thing', 'user_things', 'foo', 'thing_id');
}
在事物模型中是对应的
public function users() {
return $this->hasMany('App\User', 'user_things', 'thing_id', 'foo');
}
当我打电话给控制器时
$user = User::find(1) //works
//$thing = Thing::find(1) works
$things = $user->things();
return $things
我收到以下消息:
类Illuminate \ Database \ Eloquent \ Relations \ HasMany的对象可以 不能转换为字符串。
我的问题是,我无法在组合表中使用用户ID作为外键。它必须是foo专栏。
答案 0 :(得分:1)
您可以尝试此操作(使用belongsToMany
many-to-many
关系):
// User.php
protected $primaryKey = 'foo';
public $incrementing = false;
public function things() {
return $this->belongsToMany('App\Thing', 'user_things', 'foo', 'thing_id');
}
// Thing.php
public function users() {
return $this->belongsToMany('App\User', 'user_things', 'thing_id', 'foo');
}
最后,使用$user->things
代替$user->things()
。