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

書いた人 ヤマシタ

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

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

この記事では、

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

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

・複数データを保存する方法(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

実行結果

フルーツテーブルの出力

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

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

データの更新

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

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

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

複数のレコードを保存するにはCakePHP2.x系まではsaveallを使用していましたが、CakePHP3ではORMの変更に伴いsaveallが利用できなくなりました。

代わりに複数のレコード(エンティティ)を保存する方法として、saveManyが提供されています。

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

CakePHP2系に慣れ親しんでいる方はORMの変更でかなり感覚が変わると思われます。

そういった方は公式の新ORMアップグレードガイドを読むことで知識を更新しましょう。

参照:新ORMアップグレードガイド

まとめ

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

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

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

未経験者でも安心の徹底サポート!まずは完全無料の体験レッスン!

「プログラミングに興味があるけど未経験だし、、、」とお悩みの方はご安心ください。

  • 24時間質問し放題
  • あなただけのオーダーメイドカリキュラムで学習の効率化
  • 仕事獲得方法からオリジナルアプリ開発方法

侍エンジニア塾では徹底したサポートによる「オーダーメイドカリキュラム」を作成しています。

まずは無料体験レッスンで、「挫折しない学習方法」や「あなただけの学習ロードマップ」を知り、学習の効率化をしましょう。独学の難点である「オリジナルアプリの作り方やエラーの対処法」についてもアドバイスさせていただきます。

詳しいサービス内容は、下記よりご参照ください。

cta_mtm1

非常識な結果を出す卒業生多数!

エンジニアキャリア戦略

人気記事セレクション

LINEで送る
Pocket

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

最新情報をお届けします

書いた人

ヤマシタ

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