cakephp4で値を取得する、DBに登録するやり方のメモ

cakephp4で値を取得する、DBに登録するやり方のメモ

こんにちは!

dynaです!

この記事は、 cakephpでview画面に値を表示したり、値をとってくるときのメモです。 

久しぶりにcakephpを触ったらバージョン4になってました。

書き方忘れちゃってたので、自分のための備忘録です(;’∀’)

同じような方がいればご参考までに( ^ω^)・・・


前提
  • Xamppを使い、ローカル環境で作成
  • cakephp4を使用
  • phpは7.2以上
  • 導入部分は割愛しています
  • MVCについては割愛しています
  • 値を表示する、とってくるという基本だけを記録してます

全体のサンプル

cakephp4 + Bootstrap の無料テーマで、簡単に表示する部分を作成しました。

 

気が向いたらもうちょいデザインを直そうかな(;’∀’)

  

スクショしたのはこんな感じです。(view画面)

cakephpサンプル作成

controllerからviewに値を渡す

controllerからviewに値を渡すときは、 $this->set(compact());を使って渡ります。

ここでは、

 $favorite = ‘Mrs.Greenapple’; 

 $name = ‘dyna’; 

をビュー画面に渡します。


出力結果↓

コントローラーから値を渡す出力結果

 $this->set(compact[ ‘ 変数名1 ‘ , ‘ 変数名2 ‘ ]);とすると、compact関数が名前と同じ変数名を探してくれます。

compact関数については以下。

各引数について、compact() は現在のシンボルテーブルにおいてその名前を有する変数を探し、 変数名がキー、変数の値がそのキーに関する値となるように追加します。

引用元:https://www.php.net/manual/ja/function.compact.php



DBからの値を表示

次はDBから値をとってきて、viewに表示させたいと思います。

DBは作成しておきます。

「test_db」としてサンプルを作成しておきます。

※DBの連携部分は割愛します。

テストDB
テストDB中身

 

 このtestsDBから下記の値をとってきます。

テストDBの中身2

 

とりあえず全部出力してみる。


出力結果↓(HTMLはちょっと変えて作成しています)

DBからデータをとってくる


DBから特定の値を取得

次は、DBの1部だけ取ってきたい、というときの記載の仕方。

ここでは、 $testName = $query->where([‘name’ => ‘aaa’]); で

testsのDBの中から、「name」の項目が「aaa」を探してくるように指定しています。

aaaを探す

先ほどの public function index(){ の最後の方に以下を追加、 $this->set(compact を修正。

結果を $testNameに格納して、ビューに値を渡します。

 

コメントと名前を表示させます。

 

出力結果↓

DBから特定のものを取得

フォームから値をとってきてDBに登録

まずはフォームから値をとってくるやり方。

こんなフォームがあったとします。


フォーム

名前とコメントを入力して、登録ボタンを押したらDBに登録します。

  

フォームから値をとるには $this ->request ->getDataを使う。


ボタンが押下されたかを取得。

 

ボタンの値が「Nullでない」かつ、「フォームに入力値がある」ならDBに登録します。

※↑この条件は if文 で作成しました。

 

DBへの登録の仕方は下記。

 

ちょいちょいcakephp3と書き方が変わってるんだね。

 

 

試しに入力してみます。

フォーム入力サンプル

 

ちゃんと7番で登録されました。

DBの状態

 

書き方変わっていたり、忘れてしまっていたので備忘録です。

もし「ここ違ってるよ~等」あれば、お問い合わせからお願いします!