質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

Q&A

解決済

1回答

4832閲覧

CakePHP3でFormの値が空だった場合にデフォルト値を設定する方法

退会済みユーザー

退会済みユーザー

総合スコア0

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

0グッド

0クリップ

投稿2017/03/28 16:33

編集2017/03/28 16:43

###前提・実現したいこと
not null制約が複数あるUsersテーブルに対し、
UsersのFormを作成し、そこで入力した項目をDBに登録しようとしております。
その際、not null制約がある項目が空だった場合にデフォルト値を設定してDBに登録したいと考えています。

パッと思いついたのが、UsersControllerでFormのPOSTを取得した後、
saveする前にnot null制約の項目を確認し、空ならデフォルト値を設定すればと思ったのですが、
何かTableやEntityで項目のデフォルト値を設定する機能はあったりしますでしょうか?

###Usersテーブル構成

項目名not null制約
id-
氏名
メアド
電話番号

###UsersController.php

php

1public function add() 2{ 3 $user = $this->Users->newEntity(); 4 if ($this->request->is('post')) { 5 // ここで空かチェックするイメージ、not null制約の項目分続く 6 if (!isset($user->氏名)) { $user->氏名 = '山田 太郎'; } 7 if (!isset($user->メアド)) { $user->メアド = 'test@test.jp'; } 8 if (!isset($user->電話番号)) { $user->電話番号 = '000-0000-0000'; } 9 $user = $this->Users->patchEntity($user, $this->request->getData()); 10 if ($this->Users->save($user, ['validate' => 'registration'])) { 11 $this->Flash->success(__('You are now registered.')); 12 } else { 13 $this->Flash->error(__('There were some problems.')); 14 } 15 } 16 $this->set('user', $user); 17}

###補足情報(言語/FW/ツール等のバージョンなど)
CakePHP3.4

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

データベース側でデフォルト値を設定してはいかがでしょうか。
デフォルト値はカラムの設定で指定するだけなので簡単です。
CakePHPで設定する必要があれば、話は別ですが。

投稿2017/03/28 18:54

coba-coba

総合スコア1409

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/03/29 01:22

なるほど。 DB側のデフォルト値って手がありましたね。 CakePHPの方ばかりに目が行き過ぎてました。 ありがとうございます。 DB側の設定で対処したいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問