Napisałem poniższe zapytania podczas migracji mojej strony PHP do frameworka Yii2. Chcę je dodać do kontrolera, aby wyświetlić wygrane 10 najlepszych zakładów. Próbowałem przeszukiwać wiele klas bazy danych Yii2, ale nie mogę go uruchomić.Wykonywanie surowych zapytań SQL w Yii2?
Moje tabele są:
użytkownicy:
id | user_name | user_status | ...other columns...
zakładów:
id | user_id | date_time |...other columns...| balance_return
Zapytania chcę uzyskać w Yii2 są:
$query_all = $dbh->query("
SELECT SUM(bets.balance_return) AS total_win
, bets.user_id
, users.user_name
, users.user_status
FROM bets INNER JOIN users ON bets.user_id = users.id
WHERE users.user_status = 'verified'
AND bets.date_time > " . $start_date . "
GROUP BY bets.user_id
ORDER BY total_win DESC
");
Zmienna data_początkowa to okres 6 miesięcy, który obliczam zgodnie z time()
Należy również pamiętać, że balance_return
to każda wygrana użytkownika, więc jego suma określa ranking.
Drugie zapytanie jest:
$qwi = $dbh->query("
SELECT SUM(bets.balance_return) AS total_win
, bets.user_id
, users.user_name
, users.user_status
FROM bets INNER JOIN users ON bets.user_id = users.id
WHERE users.user_status = 'verified'
AND bets.date_time > " . $start_date . "
GROUP BY bets.user_id
ORDER BY total_win DESC LIMIT 0,10
");
Dziękuję bardzo za odpowiedź na pytanie. Udało mi się zmusić go do pracy po utknięciu na dwa dni. Chciałem też zauważyć, że kiedy nazywam '$ connection = Yii :: $ app-> getDb();' z kontrolera modułu otrzymuję błąd, musiałem zadzwonić '$ connection = \ Yii :: $ app-> getDb(); 'Dlaczego miałoby to być? –
Błąd wynika z przestrzeni nazw. Jeśli chcesz używać 'Yii' bez slasha, musisz dodać' use Yii; 'na górze klasy. – jagsler
Najlepszą praktyką jest nawyk wykonywania '' '\ Yii :: $ app ...' '' wszędzie tam, gdzie używam obiektu Yii w linii. –