世纪难题!搞了一个星期也没弄成,请求大神帮助!

GOODS:[{id:1,shopid:10000},{id:1,shopid:10001},{id:1,shopid:10000}]

SHOPS:[{id:10000,district:’杭州’},{id:10001,district:’杭州’},{id:10002,district:’上海’}]

用laravel查:符合shops中district字段=‘杭州’的全部goods数据。

请求大神指教!
Laravel

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 9

你这是表结构还是字段结构,如果是表结构直接联查啊,如果是字段,优化吧

2年前 评论
小学毕业生 2年前

大神,是表中的字段:

GOODS表:[{id字段:1,shopid:10000},{id字段:1,shopid:10001},{id:1,shopid:10000}]

SHOPS表:[{id字段:10000,district字段:'杭州'},{id:10001,district:'杭州'},{id:10002,district:'上海'}]

如何查询:shops表中district字段=‘杭州’的全部goods表数据。

2年前 评论
SELECT * FROM goods WHERE shopid IN (SELECT id FROM shops WHERE distrit = '杭州')

来硬的

2年前 评论
z9990225s_ (楼主) 2年前
第五焱陽

如果是已经对已经获取到的数据进行过滤整合 如下

$shops = collect([['id' => 10000,'district' => ’杭州’],['id'=>10001,'district' =>’杭州’],['id'=>10002,'district'=>’上海’]]);

$goods = collect([['id' => 1,'shopid'=>10000],['id'=>1,'shopid' =>10001},['id'=>1,'shopid'=>10000]]);

$shopidsArr = $shops->where('district', '=', '杭州')->pluck('id')->values()->toArray();
$goodsData = $goods->whereIn('shop_id', $shopIds);

如果是模型 且建立模型关联关系


// Goods模型中存在关系shop
public function shop() {
  return $this->belongsTo(Shop::class, 'shopid', 'id');
}

// 数据获取
$data = Goods::whereHas('shop', function ($query) {
  $query->where('district', '=', '杭州')
})->get();

如果是直接查询语句

SELECT * FROM GOODS WHERE shopid IN ( SELECT id FROM SHOPS WHERE district= '杭州');
2年前 评论
z9990225s_ (楼主) 2年前

file 谢谢各位大佬,按各位大佬的方法,果然行!!!我转化写成了这种方式!!!谢谢大佬们!!! $goods = DB::table('goods') ->join('shop', 'goods.shop_id', '=', 'shop.id') ->where('shop.district', '=', '杭州市') ->select('goods.*') ->get();

2年前 评论

就这,就这,就这 :neutral_face:

2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!