php laravel中的If条件连接查询

8aqjt8rx  于 2023-01-29  发布在  PHP
关注(0)|答案(1)|浏览(172)

我已经在Laravel中基于IF条件通过连接2个表进行了查询。我需要添加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');
    });

我已经尝试了以下方法,它正在从连接表中查询带有请求物料标识的数据。但最后我还可以看到与输入中的“物料标识”不相似的事务处理值。我只需要获取与相同物料标识完全匹配的数据。

$transactions = $transactions->where(function ($query) use ($request) {
                $query->where('advertisements.material_id', $request->material)
                    ->orWhere('offerrequests.material_id', $request->material);
                })->get();
unhi4e5o

unhi4e5o1#

在下面尝试...而不是或在哪里尝试和在哪里

$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();

相关问题