Laravel 对具有左联接的查询应用筛选
伙计们,我正在为管理员编写一个过滤器来查看订单的交易历史记录 搜索表单有3个输入。我为过滤器添加了3个where()查询。。。 但它不起作用。Laravel 对具有左联接的查询应用筛选,laravel,laravel-5,eloquent,Laravel,Laravel 5,Eloquent,伙计们,我正在为管理员编写一个过滤器来查看订单的交易历史记录 搜索表单有3个输入。我为过滤器添加了3个where()查询。。。 但它不起作用。 如果通过表单提交的搜索值存在且不为空,如何将where query添加到查询中 public function search(Request $request){ //dd($request->all()); $order_id = $request->get('order_id'); $t
如果通过表单提交的搜索值存在且不为空,如何将
where query
添加到查询中
public function search(Request $request){
//dd($request->all());
$order_id = $request->get('order_id');
$transaction_id = $request->get('transaction_id');
$tracking_code = $request->get('tracking_code');
$orderHistories = DB::table('gateway_transactions')
->leftJoin("order_transactions", "gateway_transactions.id", "=", "order_transactions.transaction_id")
->leftJoin("orders", "order_transactions.order_id", "=", "orders.id")
->leftJoin("gateway_transactions_logs", "gateway_transactions.id", "=", "gateway_transactions_logs.transaction_id")
->where('orders.id', $order_id)->where('gateway_transactions.id', $transaction_id)->where('tracking_code', $tracking_code)->paginate(10);
您应该首先检查值是否为null:
$query = DB::table('gateway_transactions')
->leftJoin("order_transactions", "gateway_transactions.id", "=", "order_transactions.transaction_id")
->leftJoin("orders", "order_transactions.order_id", "=", "orders.id")
->leftJoin("gateway_transactions_logs", "gateway_transactions.id", "=", "gateway_transactions_logs.transaction_id");
if($order_id)
{
$query->where('orders.id', $order_id);
}
if($transaction_id)
{
$query->where('gateway_transactions.id', $transaction_id);
}
if($tracking_code)
{
$query->where('tracking_code', $tracking_code);
}
$query->paginate(10);