【CakePHP入門】saveでデータを保存する方法

image (2)
書いた人 ヤマシタ
侍エンジニア塾ブログは、未経験からWebアプリ開発と仕事獲得をサポートする
侍エンジニア塾のオウンドメディアです。
プログラミング学習を覗き見

こんにちは!フリーエンジニアのヤマシタです。

CakePHPにはデータベースの内容を編集したり、追加したデータを保存する機能があります。

この記事では、

・saveとは?
・saveの基本的な使い方
・追加したデータを保存する方法
・更新したデータを保存する方法

という基本的な内容から、

・アソシエーションのデータを保存する方法(saveassociated)
・複数データを保存する方法(saveallの代替)

などの応用的な使い方について解説します。

ここではsaveでデータを保存する方法について、詳しく解説していきます!

saveとは

プログラム内で読み込んだデータベースに内容を追加したり、削除したあとに変更内容を保存するには、saveメソッドを使用します。

saveメソッドは取得したデータベースのインスタンスに対して実行されます。

saveの使い方

ここでは、実際にsaveの使い方を見ていきましょう。

事前準備として、以下のデータベースを作成しておきます。

続いて、INSERT文でデータを設定します。

次にbakemodelcontrollerの雛形を自動生成します。

modelの作成

controllerの作成

bakeについては、以下の記事で詳しく解説していますので、ぜひ参考にしてくださいね。

作成された「Cake/src/Controller/FruitsController.php」を以下のように編集します。

Cake/src/Controller/FruitsController.php

ここでは、共通処理のコールバックメソッドbeforeFilterでテーブルの追加及びsaveメソッドを使用して保存処理を行っています。

beforeFilterメソッドを使用するには、「use Cake\Event\Event;」を定義します。

beforeFilterメソッドの詳細については、以下の記事でも詳しく解説しています!

また、テーブルの操作を行うときはTableRegistryを指定してインスタンスを取得する必要があります。

TableRegistryなどのテーブルオブジェクトを使用するには「use Cake\ORM\TableRegistry;」を定義する必要があります。

次にindex.ctpファイルを作成します。

Cake/src/Template/Fruits/index.ctp

実行結果

fruits1

このサンプルプログラムを実行すると、FruitsControllerで追加したpineappleが反映されていることがわかりますね!

このようにsaveメソッドを使用すれば、プログラム内でテーブルの編集や保存といった操作が可能になります。

データの更新

テーブルの内容を更新するときは、作成したデータベースのインスタンスに対して、getメソッドでidを指定します。

以下ではid:2のデータを取得し、内容を更新してsaveメソッドで保存しています。

アソシエーションのデータを保存する

saveメソッドはアソシエーションのデータを保存することも可能です。

CakePHP2.x系まではsaveassociatedを使用していましたが、CakePHP
の公式サイトによると、saveメソッドを使用して、以下のように保存することができます。

アソシエーションについては、以下の記事で詳しく解説しています!
URL:準備中・・・

複数のレコードを保存する方法

複数のレコードを保存するにはCakePHP2.x系まではsaveallを使用していましたが、CakePHP3から非対応になりました。

そのため、複数のレコードを保存するには、クエリを実行するqueryを使用します。

以下にqueryを使用して、複数レコードを保存する方法を記述します。

queryを使用すればSQLのコマンドを発行できますので、追加するレコードを連想配列に記述して、foreach文で複数のレコードを保存することも可能です。

また、同じ手法でレコードの削除(delete)を行うこともできます。

まとめ

ここでは、saveを使用して追加や更新したデータをデータベースに保存したり、アソシエーションデータを保存する方法、複数レコードを登録するsaveallの代替手法について解説しました。

saveを使用すれば編集、追加したデータを簡単にデータベースに保存することができます。

もしsaveの使い方を忘れてしまったら、この記事を思い出してくださいね。


33歳、未経験だった僕がフリーエンジニアになれた理由
現在フリーでWEBエンジニアをやられている濱口直行さん。33歳で、プログラミングを学び始め、約半年という短い期間で独立までされた学習ログを余すことなくインタビューさせていただきました。

プログラミングを学習中の方はもちろん、独立をお考えの方まで幅広く活用できる記事になっています。この機会に是非活用していただければと思います。


現役フリーランスエンジニアによる無料体験レッスン実施中!

もし、あなたが、

  • 経験、年齢、学歴に不安がある
  • 挫折しない学習方法が知りたい
  • アプリ開発で困っている
  • エンジニアの”生”の声が聞きたい!
  • 仕事獲得の仕方がわからない
  • エンジニアに転職したいが何をすればいいかわからない

など、プログラミング学習やキャリアのことでお困りであれば、まずは『無料体験レッスン』にお申し込み下さい。

あなたにとって、最適の解決策をご提案させていただきます。

詳しくは下の画像から詳しいサービス内容をご確認ください。

cta_mtm3

学習者インタビュー

人気講師インタビュー

人気記事セレクション

LINEで送る
Pocket

この記事が気に入ったら
いいね!をしてフォローしよう

最新情報をお届けします

書いた人

ヤマシタ

フリーランスエンジニア。ITに関わるさまざまなコンテンツの企画・制作も行っています。
ITに関してはノウハウ系、ライフハック系、トレンド系など、今まで200本以上の執筆経験があります