Как я могу конвертировать нативный PHP в конструктор запросов Laravel? - PullRequest
0 голосов
/ 02 октября 2018

Как конвертировать из нативного php в построитель запросов laravel

$statsMoneyInPlay = array(); 
    $sql_query = "SELECT UNIX_TIMESTAMP(Date(ts))*1000 As ts, sum(pot + p1pot + p2pot + p3pot + p4pot + p5pot + p6pot + p7pot + p8pot + p9pot) / count(*) As moneyInPlay FROM enginepoker_log.poker WHERE GROUP BY Date(ts) ORDER BY Date(ts) LIMIT 30 "; 

, и я уже создаю построитель запросов, но все еще получаю ошибку.и это ошибка

(2/2) QueryException SQLSTATE [42000]: синтаксическая ошибка или нарушение доступа: 1064 В синтаксисе SQL имеется ошибка;проверьте руководство, соответствующее вашей версии сервера MariaDB, на предмет правильного синтаксиса для использования рядом с 'SELECT UNIX_TIMESTAMP (Date (ts) * 100 как ts), sum (pot + p1pot + p2pot + p3pot + p4p' в строке 1 (SQL: выберитеВЫБЕРИТЕ UNIX_TIMESTAMP (Дата (ts) 100 в качестве ts), сумму (банк + p1pot + p2pot + p3pot + p4pot + p5pot + p6pot + p7pot + p8pot + p9pot) / count () как moneyInPlay от enginepoker_log. poker сгруппировать по Date(ts) упорядочить по Date(ts) asc)

это построитель запросов:

$statsMoneyInPlay = DB::table('enginepoker_log.poker')
                                ->selectRaw("SELECT UNIX_TIMESTAMP(Date(ts)*100 as ts)")
                                ->selectRaw("sum(pot + p1pot + p2pot + p3pot + p4pot + p5pot + p6pot + p7pot + p8pot + p9pot) / count(*) As moneyInPlay")
                                ->groupBy("Date(ts)")
                                ->orderBy("Date(ts)")
                                ->get()
                                ->toArray();

это в блейд-страницах

@php
foreach ($statsMoneyInPlay as $key => $value) {
echo "[".$value[0].", ".$value[1]."],";
@endphp

1 Ответ

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

Запрос, который вы ищете, должен выглядеть примерно так:

$statsMoneyInPlay = DB::table('enginepoker_log.poker')
 ->select(
   DB::raw("UNIX_TIMESTAMP(Date(ts)*100) as timestamp"),
   DB::raw("SUM(pot + p1pot + p2pot + p3pot + p4pot + p5pot + p6pot + p7pot + p8pot + p9pot) / count(*) As moneyInPlay")
 )
 ->groupBy(DB::raw("DATE(ts)"))
 ->orderByRaw("DATE(ts)")
 ->get()
 ->toArray();

В блейде вы можете получить доступ к элементам, выполнив следующее:

foreach($statsMoneyInPlay as $stat) {
  echo "[" . $stat->timestamp . ", " . $stat->moneyInPlay . "]";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...