
cakePHP4でデータベースにデータを登録させたいんだけど、どうすればいいんだろう…
こんな疑問を解決します。
この記事を最後まで読むことで、
- テーブルにデータを登録できる
- 例外処理をつけてデータを登録できる
companiesテーブル(id, company_code(integer), company_name(string))を用意し、実際にデータを入れていきます。
↓完成形

【関連記事】
・cakephp4でDBのデータを取得
・cakephp4でテーブルのデータを更新
・cakephp4テーブルにデータを削除
Contents
DB登録はsaveメソッドでできる
データベースにデータを登録する場合は、saveメソッドを使います。
例)
$this->companies->save($company);また、ルールチェックやエンティティーエラーが発生した場合に例外を投げてくれるsaveOrFailも覚えておきましょう。
saveOrFailはtry catchと使い、実務でよく使うし安全です。
try {
$this->companies->saveOrFail($company);
} catch (\Cake\ORM\Exception\PersistenceFailedException $e) {
echo $e->getEntity();
}テーブルにデータを登録する
以下のように書けばデータを登録できます。
<?php
declare(strict_types=1);
namespace App\Controller;
use Cake\ORM\TableRegistry;
/**
* Companies Controller
*
* @property \App\Model\Table\CompaniesTable $Companies
* @method \App\Model\Entity\Company[]|\Cake\Datasource\ResultSetInterface paginate($object = null, array $settings = [])
*/
class CompaniesController extends AppController
{
public function initialize(): void
{
parent::initialize();
//companiesのDBを指定
$this->companies = TableRegistry::get('Companies');
}
/**
* データベースにデータを保存する処理
*/
public function add()
{
// エンティティーの生成
$company = $this->companies->newEmptyEntity();
// dd($company)
/**
* dd($company)のデバッグ結果
*/
// object(App\Model\Entity\Company) id:0 {
// '[new]' => true
// '[accessible]' => [
// 'compnay_code' => true,
// 'compnay_name' => true,
// ]
// '[dirty]' => [ ]
// '[original]' => [ ]
// '[virtual]' => [ ]
// '[hasErrors]' => false
// '[errors]' => [ ]
// '[invalid]' => [ ]
// '[repository]' => 'Companies'
// }
$company->id = 1;
$company->company_code = 1;
$company->company_name = "カモメ株式会社";
// dd($company)
/**
* dd($company)のデバッグ結果
*/
// object(App\Model\Entity\Company) id:0 {
// 'id' => (int) 1
// 'company_code' => (int) 1
// 'company_name' => 'カモメ株式会社'
// '[new]' => true
// '[accessible]' => [
// 'compnay_code' => true,
// 'compnay_name' => true,
// ]
// '[dirty]' => [
// 'id' => true,
// 'company_code' => true,
// 'company_name' => true,
// ]
// '[original]' => [ ]
// '[virtual]' => [ ]
// '[hasErrors]' => false
// '[errors]' => [ ]
// '[invalid]' => [ ]
// '[repository]' => 'Companies'
// }
// データ登録
$this->companies->save($company);
}
}

$company->idとか$company->company_codeとかありますが、->カラム名でテーブルのカラムにアクセスできます。
saveOrFailを使う場合
/**
* データベースにデータを保存する処理
*/
public function add()
{
// エンティティーの生成
$company = $this->companies->newEmptyEntity();
$company->id = 1;
$company->company_code = 1;
$company->company_name = "カモメ株式会社";
// データ登録
try {
$this->companies->saveOrFail($company);
} catch (\Cake\ORM\Exception\PersistenceFailedException $e) {
echo $e->getEntity();
}
}これでテーブルにデータを登録できます。
newEmptyEntityの他に、newEntityメソッドがあります。newEntityは、渡されたデータ($data)のバリデーションチェックするので、チェックしたくない場合はvalidateをfalseに設定します。
$companies->newEntity($data, [‘validate’ => false])
エンジニアの基礎力を上げるおすすめ本を紹介!
- 30冊以上紹介(個人的に推し本の『仮説思考』の何が良かったかも書いています)
- エンジニアなら読むべき定番の技術本や思考力を上げるなど…多数の本を紹介
- AIの回答を判断できるための知識をつける本がたくさん
あわせて読みたい


エンジニアなら読むべきおすすめ本【2026年版の基礎力が身につく必読書】
「AIに聞けば答えは出る。でも、その答えの『正しさ』を判断する力はありますか?」 なかなか「正しく判断する力は私はある」と答えられる人は少なくなってきているので...




コメント