lubo_comment_query/app/Http/Controllers/ProgramQueryController.php

52 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) {
$_keyword = trim($_keyword);
if (mb_strlen($_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,
]);
}
}