繁体   English   中英

laravel中if条件加入查询

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM