项目表

| 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相匹配。

最佳答案

表定义看起来不正确,您应该有一个将itemssells链接的数据透视表,因此是一个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();

10-08 04:04