Laravel 5.6: как создать подзапрос с помощью Query Builder - PullRequest
0 голосов
/ 11 октября 2018

Я хотел бы воспроизвести следующий запрос MySQL с помощью построителя запросов Laravel:

*SELECT SUM(scores) FROM (SELECT scores FROM player_games WHERE player_id = 1 ORDER BY id DESC LIMIT 2) scores

Есть предложения?

Вот решение:

    $sub = playerGame::where('player_id',1)->where('scores','>',0)->limit(2)->orderBy('id','desc');

    $count = DB::table( DB::raw("({$sub->toSql()}) as sub") )
   ->mergeBindings($sub->getQuery()) 
   ->sum('scores');
   return $count;

Ответы [ 2 ]

0 голосов
/ 11 октября 2018

Использование fromSub():

$sub = playerGame::select('scores')
    ->where('player_id', 1)
    ->where('scores', '>', 0)
    ->limit(2)
    ->orderBy('id','desc');
$sum = DB::query()->fromSub($sub, 'scores')->sum('scores');
0 голосов
/ 11 октября 2018
$responce= DB::table('player_games')->where('player_id',1)->sum('amount');
        dd(collect($responce)->sortByDesc('id')->take(2)); 

пожалуйста, проверьте это ..... я пытаюсь это работает .... и добавьте использование DB; в верхней части контроллера ....

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