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

Lia97's avatar
Level 1

Make Filter Search for Query Builder

I have a code like this.

	***
	DB::raw("(SELECT TAPET_NAME FROM MA_TAPE_TYPE WHERE TAPET_CODE = a.MATERIAL_TYPE) as 	media_type"), 
	DB::raw("(SELECT TAPEF_NAME FROM MA_TAPE_FORMAT WHERE TAPEF_CODE = a.MATERIAL_FORMAT) as media_format"), 
             DB::raw("CASE WHEN a.iden_flag = 'P' THEN b.epi_title WHEN a.iden_flag = 'C' THEN b.prod_version_name WHEN a.iden_flag = 'M' THEN b.promo_name END as episode_title"),
	DB::raw("(SELECT MAX (last_date) FROM run_master WHERE run_master.row_id_epi = w.row_id AND run_master.run_aired = 'Y') as last_tx")
	***

When I call it for the search function,

	if ($request->get('media_type') != '') {
        		$medias = $medias->where('a.material_type','like','%'.strtoupper($request->get('media_type')).'%');
    	}

    	if ($request->get('media_format') != '') {
        		$medias = $medias->where('a.material_format','like','%'.strtoupper($request->get('media_no')).'%');
   		 }
	
    	if ($request->get('episode_title') != '') {
       	 $medias = $medias->where('b.promo_name','like','%'.strtoupper($request->get('episode_title')).'%');
   		 }

   		 if ($request->get('last_tx') != '') {
        	$medias = $medias->where('last_date','like','%'.strtoupper($request->get('last_tx')).'%');
   		 }

the code cannot display the data that it should.

If i write a regular query like this,

***
->select('a.MATERIAL_ID as media_no'),.....
***

And

***
	        if ($request->get('media_no') != '') {
        $medias = $medias->where('a.material_id','like','%'.strtoupper($request->get('media_no')).'%');
    }
***

I can call for the search function and successfully find the data. How should I write the correct code for my search syntax as I used the syntax for that somewhat complicated query

0 likes
0 replies

Please or to participate in this conversation.