我有一个名为Campaign的模型,该模型属于其他两个模型“ Client”和“ Coupon”。
现在,我需要根据campaignId查找具有该ID的广告系列,还要查找具有相同clientId的其他广告系列。
我能够处理2个请求并合并结果,但是我很确定可以在单个请求中完成。
以防万一,这是我的2个请求:
$couponDetails = Campaign::with(['coupon', 'client'])
->where('uuid', '=', $campaignId)
->get()
->all();
$extraCoupon = Campaign::with(['coupon', 'client'])
->where('client_id', '=', $couponDetails[0]->client_id)
->whereNotIn('uuid', [$couponDetails[0]->uuid])
->get()
->all();
我想我应该在campaignId上执行嵌套选择,然后在clientId上执行where子句,但是我找不到正确的语法。
谢谢您的帮助。
答案 0 :(得分:0)
laravel中的orWhere
有一个选项,它将为您提供以下信息:
$coupons = Campaign::with(['coupon', 'client'])
->where(function($query) use ($campaignId){
$query->where('uuid', '=', $campaignId);
})
->orWhere(function($query) use ($couponDetails){
$query->where('client_id', '=', $couponDetails[0]->client_id)
->whereNotIn('uuid', [$couponDetails[0]->uuid]);
})
->get()
->all();