52 lines
2.0 KiB
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,
|
|
]);
|
|
}
|
|
}
|