副業におすすめなサイトを見る→

cakephp4でテーブルのデータを更新する方法を解説

アプリリリースのお知らせ

予定を探すアプリyoteipickerをリリースしました。

アプリの利用用途:暇だから何か予定入れたいけど今週の土日は何しようかな〜?ってときに使えるアプリです。

cakePHP4でテーブルのデータを更新するにはどうすればいいんだろう…

こんな疑問を解決します。

この記事を最後まで読むことで、

  • データを更新できる

事前にcompaniesテーブル(id, company_code(integer), company_name(string))を用意します。

更新前

id=3のcompany_codeとcompany_nameを更新します。

更新後

開発環境
PHP8
cakePHP4

【関連記事】
cakephp4でDBのデータを取得
cakephp4テーブルにデータを登録
cakephp4でテーブルのデータを削除

>>ココナラと似てるおすすめの副業サイトを確認する

>>リモートワークもあるおすすめの転職サイトを確認する

休日で空いた時間の暇つぶしを探せるアプリを公開しています。

Contents

データの更新にも登録と同じsaveメソッドが使える

データの更新は以下のようにかけます。

<?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 update()
    {
        $id = 3;
     // getメソッドで、companiesテーブルから特定のデータを抽出。ここでは、id=3のデータを取得
        $company = $this->companies->get($id);
        // dd($company)
        /**
         * dd($company)でデバッグした結果
         */
        // object(App\Model\Entity\Company) id:0 {
        //     'id' => (int) 3
        //     'company_code' => (int) 3
        //     'company_name' => 'カモメ商業'
        //     '[new]' => false
        //     '[accessible]' => [
        //     'compnay_code' => true,
        //     'compnay_name' => true,
        //     ]
        //     '[dirty]' => [ ]
        //     '[original]' => [ ]
        //     '[virtual]' => [ ]
        //     '[hasErrors]' => false
        //     '[errors]' => [ ]
        //     '[invalid]' => [ ]
        //     '[repository]' => 'Companies'
        //     }

        $company->company_code = 200;
        $company->company_name = "カモメのススメ合同会社";

        // データの更新
        $this->companies->save($company);
    }
}

saveOrFailメソッドとtry catchを使えばより安全にデータを更新できる。もし例外があれば例外処理を投げてくれる。

    /**
     * テーブルのデータを更新する処理
     */
    public function update()
    {
        $id = 3;
        // getメソッドで、companiesテーブルから特定のデータを抽出。ここでは、id=3のデータを取得
        $company = $this->companies->get($id);
        // dd($company)
        /**
         * dd($company)でデバッグした結果
         */
        // object(App\Model\Entity\Company) id:0 {
        //     'id' => (int) 3
        //     'company_code' => (int) 3
        //     'company_name' => 'カモメ商業'
        //     '[new]' => false
        //     '[accessible]' => [
        //     'compnay_code' => true,
        //     'compnay_name' => true,
        //     ]
        //     '[dirty]' => [ ]
        //     '[original]' => [ ]
        //     '[virtual]' => [ ]
        //     '[hasErrors]' => false
        //     '[errors]' => [ ]
        //     '[invalid]' => [ ]
        //     '[repository]' => 'Companies'
        //     }

        $company->company_code = 100;
        $company->company_name = "カモメのススメ東京中央支社";

        // データの更新
        try {
            $this->companies->saveOrFail($company);
        } catch (\Cake\ORM\Exception\PersistenceFailedException $e) {
            echo $e->getEntity();
        }
    }

>>ココナラと似てるおすすめの副業サイトを確認する

>>リモートワークもあるおすすめの転職サイトを確認する

休日で空いた時間の暇つぶしを探せるアプリを公開しています。

スキルを売り買いするならココナラ

コメント

コメントする

CAPTCHA


Contents
閉じる