You've already forked lubo_comment_query
							
							
		
			
				
	
	
		
			51 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			51 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| namespace App\Http\Controllers;
 | |
| 
 | |
| use App\Models\Programs;
 | |
| use Illuminate\Database\Eloquent\Builder;
 | |
| use Illuminate\Http\Request;
 | |
| use Illuminate\Routing\Controller as BaseController;
 | |
| 
 | |
| class ProgramQueryController extends BaseController
 | |
| {
 | |
|     public function index(Request $request) {
 | |
|         $keyword = $request->get("keyword", "");
 | |
|         $query = Programs::query()->with(["appends", "video_pivots.video"])->where("status", "=", 1)->orderByDesc("created_at");
 | |
|         if ($keyword) {
 | |
|             $keyword_split = explode(" ", $keyword);
 | |
|             foreach ($keyword_split as $_keyword) {
 | |
|                 if (mb_strlen(trim($_keyword)) > 0) {
 | |
|                     $query->where(function (Builder $_query) use ($_keyword) {
 | |
|                         $_query
 | |
|                             ->where("name", "like", "%{$_keyword}%")
 | |
|                             ->orWhere("difficulty", "like", "%{$_keyword}%")
 | |
|                             ->orWhere("desc", "like", "%{$_keyword}%")
 | |
|                             ->orWhereHas("appends", function (Builder $__query) use ($_keyword) {
 | |
|                                 $__query->where("from", "like", "%{$_keyword}%");
 | |
|                                 $__query->orWhere(function (Builder $sub_query) use ($_keyword) {
 | |
|                                     $sub_query
 | |
|                                         ->where("is_original", "=", 0)
 | |
|                                         ->where("name", "like", "%{$_keyword}%");
 | |
|                                 });
 | |
|                             })
 | |
|                         ;
 | |
|                     });
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
|         $programs = $query->paginate(10)->withQueryString();
 | |
|         return view("program.index", [
 | |
|             "keyword" => $keyword,
 | |
|             "programs"=>$programs,
 | |
|         ]);
 | |
|     }
 | |
| 
 | |
|     public function videos(Request $request, Programs $program) {
 | |
|         return view("program.video.index", [
 | |
|             "program" => $program,
 | |
|             "videos" => $program->video_pivots,
 | |
|         ]);
 | |
|     }
 | |
| }
 |