Laravel,Eloquent n:m

时间:2015-07-17 20:14:10

标签: laravel foreign-keys eloquent laravel-5

我尝试使用Eloquent在Laravel中定义一个n:m关系。我给出了以下表格:

用户:

  • ID
  • FOO

  • ID

users_things

  • thing_id
  • FOO

在我的用户模型中,我定义了以下函数

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专栏。

1 个答案:

答案 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()