RawController.php 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. <?php
  2. namespace app\controllers;
  3. use app\helpers\Query;
  4. use Yii;
  5. use yii\web\Controller;
  6. class RawController extends Controller
  7. {
  8. /**
  9. * Test #2: Single Database Query
  10. */
  11. public function actionDb()
  12. {
  13. $statement = Yii::$app->db->createCommand('SELECT id, randomNumber FROM World WHERE id = :id');
  14. $world = $statement->bindValue(':id', mt_rand(1, 10000))->queryOne();
  15. $world['id'] = (int)$world['id'];
  16. $world['randomNumber'] = (int)$world['randomNumber'];
  17. return $this->asJson($world);
  18. }
  19. /**
  20. * Test #3: Multiple Database Queries
  21. */
  22. public function actionQueries($queries)
  23. {
  24. $queries = Query::clamp($queries);
  25. $statement = Yii::$app->db->createCommand('SELECT id, randomNumber FROM World WHERE id = :id');
  26. $worlds = [];
  27. while ($queries--) {
  28. $result = $statement->bindValue(':id', mt_rand(1, 10000))->queryOne();
  29. $result['id'] = (int)$result['id'];
  30. $result['randomNumber'] = (int)$result['randomNumber'];
  31. $worlds[] = $result;
  32. }
  33. return $this->asJson($worlds);
  34. }
  35. /**
  36. * Test #4: Fortunes
  37. */
  38. public function actionFortunes()
  39. {
  40. $fortunes = Yii::$app->db->createCommand('SELECT id, message FROM Fortune')->queryAll(\PDO::FETCH_KEY_PAIR );
  41. $fortunes[0] = 'Additional fortune added at request time.';
  42. asort($fortunes);
  43. $this->view->title = 'Fortunes';
  44. return $this->render('fortunes', ['fortunes' => $fortunes]);
  45. }
  46. /**
  47. * Test #5: Database Updates
  48. */
  49. public function actionUpdates($queries)
  50. {
  51. $queries = Query::clamp($queries);
  52. $selectCommand = Yii::$app->db->createCommand('SELECT id,randomNumber FROM World WHERE id = :id');
  53. $updateCommand = Yii::$app->db->createCommand('UPDATE World SET randomNumber = :num WHERE id = :id');
  54. $worlds = [];
  55. while ($queries--) {
  56. $id = mt_rand(1, 10000);
  57. $randomNumber = mt_rand(1, 1000);
  58. $selectCommand->bindParam(':id', $id)->queryScalar();
  59. $updateCommand->bindValues([':id' => $id, ':num' => $randomNumber])->execute();
  60. $worlds[] = ['id' => $id, 'randomNumber' => $randomNumber];
  61. }
  62. return $this->asJson($worlds);
  63. }
  64. }