Laravel 对具有左联接的查询应用筛选

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

伙计们,我正在为管理员编写一个过滤器来查看订单的交易历史记录

搜索表单有3个输入。我为过滤器添加了3个where()查询。。。 但它不起作用。
如果通过表单提交的搜索值存在且不为空,如何将
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);