项目表
| 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相匹配。
答案 0 :(得分:1)
表定义看起来不正确,您应该有一个将items
与sells
相关联的数据透视表,因此sell_item
表:
item_id | sell_id
-----------------
1 | 1
1 | 3
2 | 1
2 | 2
3 | 2
3 | 3
然后使用eloquent,您可以创建模型来表示您的表格并使用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();
答案 1 :(得分:0)
表格定义看起来不正确,如果您已经纠正,那么您的模型重播应该像
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->项目访问它的相关模型。
如果不进行Eloquent路由,查询构建器可以执行连接:
DB::table('sells')->join('items', 'sells.item_id', '=', 'items.item_id')
->select('sells.*', 'items.title')
->get();
或者,如果您的型号名称为Sell
,则
$response=Sell::with('items')->get();