[英]If condition joined query in laravel
我通过基于 IF 条件连接 2 个表在 Laravel 中进行了查询。 我需要添加一个 where 查询以根据连接表中的 material_id 列过滤数据。
$transactions = DB::table('transactions')
->select('transactions.id', DB::raw("IF(transactions.is_sell = '1', advertisements.material_id, offerrequests.material_id) as material_id"))
->leftJoin('advertisements', function ($join) {
$join->on('advertisements.id', '=', 'transactions.post_id');
})
->leftJoin('offerrequests', function ($join) {
$join->on('offerrequests.id', '=', 'transactions.post_id');
});
我尝试了以下操作,它正在使用连接表中请求的 material_id 查询数据。 但最后我也可以看到与输入中的“material_id”不相似的交易价值。 我只需要获取与相同材料 ID 完全匹配的数据。
$transactions = $transactions->where(function ($query) use ($request) {
$query->where('advertisements.material_id', $request->material)
->orWhere('offerrequests.material_id', $request->material);
})->get();
试试下面...而不是 orwhere try andWhere
$transactions = $transactions->where(function ($query) use ($request) {
$query->where('advertisements.material_id', $request->material)
->andWhere('offerrequests.material_id', $request->material);
})->get();
或者
$transactions = $transactions ->where('advertisements.material_id', $request->material);
$transactions = $transactions ->where('offerrequests.material_id', $request->material);
$transactions = $transacions ->get();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.