[ランキングシステム]クエリの使い方について | Unity Forum | Tech Stadium Forum

[ランキングシステム]クエリの使い方に...
 
通知
すべてクリア

[ランキングシステム]クエリの使い方について  

  RSS

Student
(@student)
メンバー Moderator
結合: 4年前
投稿: 1351
08/07/2021 2:02 pm  

データベースを利用したランキングシステムの課題について、映画の興収ランキングをテーマに取り組んでいます。

まずは興収上位5位を並び替え、表示させることを目標にしておりますが、完全に手が止まってしまいました。

【現状】
・データベースに「Id」「Title」「Revenue」「Date」で10データを登録済み
・結果を表示させる前のページは作成できますが、順位を入れ替えた結果を表示させるページがどうしてもエラーとなってしまいます。
現状の作成内容をプッシュしましたので、一度アドバイスを頂けないでしょうか。
特にクエリーの使い方に間違いがないかをご教示いただけると助かります。


引用
Student
(@student)
メンバー Moderator
結合: 4年前
投稿: 1351
08/07/2021 2:03 pm  

1.データベースのテーブル名はrankingとしているので、頭文字は小文字に修正します。

2.$query = $this->ranking->find('all');自体は記載内容は間違っていないように思います。この記載により、[ranking]テーブルのすべてのデータを読み取ってると認識していますが誤解でしょうか?

また、エラー画面の最上段に「Notice (1024): Undefined property: RankingController::$ranking in C:\ts_un_stu_202102\20_ServerProject\htdocs\Rankingsystem\src\Controller\RankingController.php on line 29」

とあるので、「$ranking」という変数が定義されていないとのことですが、そもそも「$ranking」という変数を使用していないので、無視してもよいのでしょうか?


返信引用
Teacher
(@admin)
メンバー Admin
結合: 5年前
投稿: 1318
08/07/2021 2:08 pm  

「RankingController」を編集して、ランキング画面が表示されるようになりました。

1についてですが、コントローラー名と同じ名前のテーブルを「$this->テーブル名」と指定することで、データベースを操作できます。
しかし、大文字小文字の基準はコントローラーに準じるので、「Ranking」と大文字を使うのが正しいです。

2については、大文字にすればテーブルの指定になる為、変数として認識される事はないのでエラーは消えます。
また、大文字でも同様のエラー
が出るという事ですが、52行目でも小文字の「ranking」が使用されている事が問題だと思うので、そちらも大文字に変更する様にして下さい。

因みに、46,47行目もエラーが出ましたが、今回はコメントアウトで対処させて頂きました。


返信引用
Student
(@student)
メンバー Moderator
結合: 4年前
投稿: 1351
08/07/2021 2:11 pm  

クエリの使い方で具体的に以下ご教示いただきたく。

テキストでは添付のように[omikuji]テーブルからクエリを取得する場合、

$query = $this->Omikuji->find('all');

と書いておりますが、ここの「$this」「find('all')」の間の「Omikuji」はテーブル名ではなく、コントローラー名が入るのでしょうか?
(「OmikujiController.php」の「Controller.php」を除いた「Omikuji」が入る?)


返信引用
Teacher
(@admin)
メンバー Admin
結合: 5年前
投稿: 1318
08/07/2021 2:11 pm  

composerやapp.phpを使ってサーバーとの連動が済んだコントローラでは、
コントローラー名と同じ名前のテーブルを$this->テーブル名と指定することで、データベースを操作できます。

なので、「Omikuji」はテーブル名となりますが、コントローラー名でも解釈としては合っています。


返信引用
共有:
タイトルとURLをコピーしました