我正在寻找一些帮助来解决如何为我的应用程序设置Eloquent关系。
我已经为三个表创建了迁移。
| users | | items | | user_items |
+-----------+ +-----------+ +------------+
| id | | id | | id |
| username | | name | | user_id |
| item_id |
| qty |
我在user_items
表上设置了一个唯一索引,将1个用户ID限制为1个项ID,但是使用了qty列。我想设置Eloquent,以便我有两个模型,User和Item。我可以说:
$item = $user->items()->first();
$name = $item->name;
$qty = $item->qty;
问题是我正在试图弄清楚我是否需要第三个模型,UserItem。
答案 0 :(得分:1)
你在这里做的实际上是M:M关系,而且Laravel Eloquent已经支持o ut of the box.你拥有的user_item表被称为数据透视表。
以下是使用Eloquent建立关系的方法。
// User class
class User extends Eloquent {
public items() {
return $this->belongsToMany(Item::class)->withPivot('qty');
}
}
class Item extends Eloquent {
public function users() {
return $this->belongsToMany(User::class)->withPivot('qty');
}
}
为此,您需要进行三次迁移:
$user = User::find(1); $user->items[0]->pivot->qty; // retrieve the quantity