Скопируйте родительский запрос в другую переменную и добавьте к ней дополнительные условия - PullRequest
0 голосов
/ 17 февраля 2020

Я объявил переменную, которая в основном является запросом выбора, и мне нужно скопировать эту родительскую переменную в другую, а затем добавить некоторые условия where в эту скопированную переменную. Дело в том, что мои условия where применяются к первой переменной, а не к той, которую я хотел бы.

//main query
$query = News::select('news.id','news.created_at','news.idCategory')->with('newsTranslations');

if ($request->has('categories')) {
    $query = $query->whereIn('news.idCategory', $input['categories']);
}

if ($request->has('jobCategories')) {
    $query = $query->join('jobCategories_News','news.id','=','jobCategories_News.idNews')
    ->whereIn('jobCategories_News.idjobCategories', $input['jobCategories']);
}
$chartquery = $query; // copy of parent query variable
$chartquery= $chartquery->leftJoin('newsInteractions','news.id','=','newsInteractions.idNews');

//subqueries (applied to $query instead of $chartquery)
$vis_like = $chartquery->where('liked','=',1)->where('visualizationDate','!=', NULL)->count();
$no_vis_like= $chartquery->where('liked','=',1)->where('visualizationDate','=', NULL)->count();
$dislike = $chartquery->where('liked','=',0)->count();
$vis_no_like= $chartquery->where('liked','=',NULL)->where('visualizationDate','!=', NULL)->count();

1 Ответ

0 голосов
/ 17 февраля 2020

Решение:

  $query = News::select('news.id','news.created_at','news.idCategory')- >with('newsTranslations');

    if ($request->has('categories')) {
        $query = $query->whereIn('news.idCategory', $input['categories']);
    }

    if ($request->has('jobCategories')) {
        $query = $query->join('jobCategories_News','news.id','=','jobCategories_News.idNews')
        ->whereIn('jobCategories_News.idjobCategories', $input['jobCategories']);
    }

    $chartquery = clone $query;
    $chartquery= $chartquery->leftJoin('newsInteractions','news.id','=','newsInteractions.idNews');

    $vis_like = clone $query;
    $vis_like = $vis_like->where('liked','=',1)->where('visualizationDate','!=', NULL)->count();

Спасибо, ребята!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...