CakePHP3で特定のテーブルにFormから値を新規入力する方法。

CakePHPではFormヘルパーを使って簡単にForm要素を作成することが出来ます。

そのFormヘルパーで今回は特定のテーブル名を指定して値を保存するところまでやってみようと思います。

まずは仮のテーブル名でこういう要素があるテーブル名があるものをイメージ。

create table table_name(
id int unsigned auto_increment primary key,
user_name varchar(255),
created datetime default null,
modified datetime default null
);

それでは早速ViewファイルにFormヘルパーを作成します。

Formヘルパーで重要なのはテーブルの要素名とFormのinput値を合わせること。

基本的な構造のものであれば下記のuser_nameを追加するFormを作成することができます。

<?= $this->Form->create($post); ?>
<?= $this->Form->input(‘user_name’); ?>
<?= $this->Form->button(‘Add’); ?>
<?= $this->Form->end(); ?>

これが出来たら続いてはcontroller側で下記のように記述。

これは特定のテーブルを指定するための記述となります。

use Cake\ORM\TableRegistry;

public function initialize()
{
parent::initialize();
$this->table_name = TableRegistry::get(‘テーブル名’);
}

続いて入力制御の部分を書いていきます。上のコードは初期設定の方に書いておいて、下は例えばアクション名がaddならaddの中に書いておきます。

(Controller名がPagesの為、下記になっていますがPostsの場合はPagesをPostsに変更します。そうしないとエラーがでるのでご注意を。)

$post = $this->Pages->newEntity();
if ($this->request->is(‘post’)) {
$post = $this->Pages->patchEntity($post, $this->request->data);
$this->table_name->save($post);
return $this->redirect([‘action’=>’index’]);
}

これで、特定のテーブルに対して値の追加ができるようになっているかと。

要素を合わせることで、PHPで書く時にINSERT文を書く必要もなく、とても便利に使用することが出来ますのでぜひご活用を!

シェアする

  • このエントリーをはてなブックマークに追加

フォローする