【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の使い方を忘れてしまったら、この記事を思い出してくださいね。

おすすめのコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

「何の言語から勉強すればいいかわからない・・・」そんなあなたに質問に答えていくだけで、何の言語を学べば良いのか診断いたします!未経験から6ヶ月でプログラミング習得に向けた学習プランが1分で分かる!

最短でプログラミングを習得したい方へ

元々ITリテラシーのある方やプログラムの学び方がわかっている方は独学で習得することも可能でしょう。

ただし、実際の学習期間中はつまづいている時間がほとんどです。

「もう挫折したくない」
「本業と両立しながら、好きな時間で自分のペースで勉強を続けていきたい。」
「自分だけのカリキュラムで効率的に勉強したい」

そんな方はお気軽に侍エンジニア塾までご相談ください。

弊社では、

  • プログラミング基礎学習
  • オリジナルアプリ開発
  • 仕事獲得

までをひと通り学習できます。

まずは無料体験レッスンで、弊社のコンサルタントと一緒にあなた専用の学習方法やカリキュラムを考えてみませんか?

挫折しない学び方や、通常1000時間以上かかる学習時間を1/3にする方法などより具体的なアドバイスもさせていただいています。

詳しくは下の画像をクリックして弊社サービス内容をご確認ください。

cta1

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

エンジニアキャリア戦略

人気記事セレクション

3000名以上来場の人気セミナーが開催決定

18歳で時給6000円だった侍エンジニア塾代表の木内より、『プログラミングで人生を変える』ための学習方法をお教えます。

0からプログラミングを習得し、フリーランスエンジニアになる方法プログラミング学習の効率を劇的に上げる学習メソッドを解説しますので、奮ってご参加ください。

  • 日付:4/20(土),4/27(土)
  • 時間:14:00〜17:35終了予定
  • 場所:当社 道玄坂オフィス
  • 住所:〒150-0043 東京都渋谷区道玄坂2丁目11-1 Gスクエア渋谷道玄坂 4F *Googleマップでは「東京都渋谷区道玄坂2丁目11-1」で検索してください。近隣にスクエア渋谷という別のビルがあるためご留意ください。
  • 参加費:無料
  • URL:https://seminar.sejuku.net/
詳しくは下の画像をクリックして弊社セミナー内容をご確認ください。

LINEで送る
Pocket

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

最新情報をお届けします

書いた人

ヤマシタ

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