Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

Nosean's avatar

Query Builder clauses

I need help. Would like to include clauses in a query.

        $orders = DB::connection('sqlsrv1')
                ->table('PF_tank_gas_orders')
                ->join('KHKAdressen', 'PF_tank_gas_orders.adress', '=', 'KHKAdressen.Adresse')
                ->join('ECCTanks', 'ECCTanks.Tank', '=', 'PF_tank_gas_orders.tank')
                ->where('KHKAdressen.Mandant', '=', '1')
		if($order=1) {
                	->where('PF_tank_gas_orders.status', '=', '1')->get();
		} else {
			->where('PF_tank_gas_orders.status', '=', '0')->get();
		}

This solution not work's. anyone a idea???

Thanks for Help.

0 likes
2 replies
Sinnbeck's avatar

Just set that variable here

$orderiD = $order == 1 ? 1 : 0;

        $orders = DB::connection('sqlsrv1')
                ->table('PF_tank_gas_orders')
                ->join('KHKAdressen', 'PF_tank_gas_orders.adress', '=', 'KHKAdressen.Adresse')
                ->join('ECCTanks', 'ECCTanks.Tank', '=', 'PF_tank_gas_orders.tank')
                ->where('KHKAdressen.Mandant', '=', '1')
		->where('PF_tank_gas_orders.status', '=', $orderID)->get();
		->get()
Sinnbeck's avatar

Just for completion. You would normally use when() to do what you want. First argument is the test, second it the true and third is false

$orders = DB::connection('sqlsrv1')
                ->table('PF_tank_gas_orders')
                ->join('KHKAdressen', 'PF_tank_gas_orders.adress', '=', 'KHKAdressen.Adresse')
                ->join('ECCTanks', 'ECCTanks.Tank', '=', 'PF_tank_gas_orders.tank')
                ->where('KHKAdressen.Mandant', '=', '1')
		->when($order == 1, function($q) {
                      ->where('PF_tank_gas_orders.status', '=', 1);
                }, function($q) {
                      ->where('PF_tank_gas_orders.status', '=', 0);
                })
		->get()

Please or to participate in this conversation.