RawController.php 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  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 (0 < $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();
  41. $fortunes[] = ['id' => 0, 'message' => 'Additional fortune added at request time.'];
  42. usort($fortunes, function ($left, $right) {
  43. return strcmp($left['message'], $right['message']);
  44. });
  45. $this->view->title = 'Fortunes';
  46. return $this->render('fortunes', ['fortunes' => $fortunes]);
  47. }
  48. /**
  49. * Test #5: Database Updates
  50. */
  51. public function actionUpdates($queries)
  52. {
  53. $queries = Query::clamp($queries);
  54. $selectCommand = Yii::$app->db->createCommand('SELECT randomNumber FROM World WHERE id = :id');
  55. $updateCommand = Yii::$app->db->createCommand('UPDATE World SET randomNumber = :num WHERE id = :id');
  56. $worlds = [];
  57. while (0 < $queries--) {
  58. $id = mt_rand(1, 10000);
  59. $randomNumber = mt_rand(1, 1000);
  60. $selectCommand->bindParam(':id', $id)->queryScalar();
  61. $updateCommand->bindValues([':id' => $id, ':num' => $randomNumber])->execute();
  62. $worlds[] = ['id' => $id, 'randomNumber' => $randomNumber];
  63. }
  64. return $this->asJson($worlds);
  65. }
  66. }