项目表
| id | item_id | item_title |
|-------|---------|------------|
| 1 | 1002 | A |
| 2 | 1003 | B |
| 3 | 1004 | C |
卖表
| id | item_id |
|----|-----------|
| 1 | 1002 1003 |
| 2 | 1003 1004 |
| 3 | 1004 1002 |
我想要结果:出售表1.项目标题是A B
我想将Sells表与item表结合起来,然后将Sells表的item_id与item表的item_title相匹配。
最佳答案
表定义看起来不正确,您应该有一个将items
与sells
链接的数据透视表,因此是一个sell_item
表:
item_id | sell_id
-----------------
1 | 1
1 | 3
2 | 1
2 | 2
3 | 2
3 | 3
然后使用雄辩的方法,创建模型来表示表并使用
BelongsToMany
定义关系:class Item extends Model {
public function sells() {
return $this->belongsToMany(Sell::class);
}
}
class Sell extends Model {
public function items() {
return $this->belongsToMany(Item::class);
}
}
然后,每个模型的每个实例都可以通过
$item->sells
和$sell->items
访问其相关模型。如果不使用Eloquent路由,查询构建器可以执行联接:
DB::table('sells')->join('items', 'sells.item_id', '=', 'items.item_id')
->select('sells.*', 'items.title')
->get();