cakePHP4でモデルを作成するにはどうすればいいんだろう…
こんな疑問を解決します。
【開発環境】
PHP8.1
cakePHP4
また、準備としてitemsテーブルを作成しておきましょう。
itemsテーブルに関しては、idやnameなどの最低限のカラムを持たせておいてください。
ココナラと似てるサイト比較11選!【2023年最新版】
この記事ではココナラに似てる副業サイトを11こ紹介しています。 今すぐスキルをお金にするなら、記事で気になったサービスに登録してみましょう。 本記事のゴール ココ…
転職におすすめなサイト11選【リモート・フリーランスも対象】
転職におすすめなサイトが知りたいなぁ… 転職エージェントによって相性があります! この記事では、フリーランスの方でも利用できる転職におすすめなサイトを紹介しま…
休日で空いた時間の暇つぶしを探せるアプリを公開しています。
Contents
cakePHP4でモデルを作成する-通常
モデルを作成するbakeコマンド
$ bin/cake bake model Items
以下のように実行されます。
$ bin/cake bake model Items
One moment while associations are detected.
Baking table class for Items...
Creating file /var/www/html/src/Model/Table/ItemsTable.php
Wrote `/var/www/html/src/Model/Table/ItemsTable.php`
Deleted `/var/www/html/src/Model/Table/.gitkeep`
Baking entity class for Item...
Creating file /var/www/html/src/Model/Entity/Item.php
Wrote `/var/www/html/src/Model/Entity/Item.php`
Deleted `/var/www/html/src/Model/Entity/.gitkeep`
Baking test fixture for Items...
Creating file /var/www/html/tests/Fixture/ItemsFixture.php
Wrote `/var/www/html/tests/Fixture/ItemsFixture.php`
Deleted `/var/www/html/tests/Fixture/.gitkeep`
Bake is detecting possible fixtures...
Baking test case for App\Model\Table\ItemsTable ...
Creating file /var/www/html/tests/TestCase/Model/Table/ItemsTableTest.php
Wrote `/var/www/html/tests/TestCase/Model/Table/ItemsTableTest.php`
Done
Doneとなれば、成功です。
以下のようにそれぞれファイルが作成されます。
- /Model/Entity/Item.php
- /Model/Table/ItemsTable.php
- /tests/Fixture/ItemsFixture.php
- /tests/TestCase/Model/Table/ItemsTableTest.php
cakePHP4でモデルを作成する-テストファイルが不要な場合
テストファイルが不要でモデルを作成
$ bin/cake bake model Items --no-test --no-fixture
以下のように実行されます。
$ bin/cake bake model Items --no-test --no-fixture
One moment while associations are detected.
Baking table class for Items...
Creating file /var/www/html/src/Model/Table/ItemsTable.php
Wrote `/var/www/html/src/Model/Table/ItemsTable.php`
Baking entity class for Item...
Creating file /var/www/html/src/Model/Entity/Item.php
Wrote `/var/www/html/src/Model/Entity/Item.php`
テストファイル抜きで作成されます。
- /Model/Entity/Item.php
- /Model/Table/ItemsTable.php
cakePHP4でモデルを作成する-テーブル名と異なるモデル名にしたい場合
テーブル名と異なるモデル名にする場合
$ bin/cake bake model SecoundItems --table items
以下のように実行されます。
$ bin/cake bake model SecoundItems --table items
One moment while associations are detected.
Baking table class for SecoundItems...
Creating file /var/www/html/src/Model/Table/SecoundItemsTable.php
Wrote `/var/www/html/src/Model/Table/SecoundItemsTable.php`
Baking entity class for SecoundItem...
Creating file /var/www/html/src/Model/Entity/SecoundItem.php
Wrote `/var/www/html/src/Model/Entity/SecoundItem.php`
Baking test fixture for SecoundItems...
Creating file /var/www/html/tests/Fixture/SecoundItemsFixture.php
Wrote `/var/www/html/tests/Fixture/SecoundItemsFixture.php`
Bake is detecting possible fixtures...
Baking test case for App\Model\Table\SecoundItemsTable ...
Creating file /var/www/html/tests/TestCase/Model/Table/SecoundItemsTableTest.php
Wrote `/var/www/html/tests/TestCase/Model/Table/SecoundItemsTableTest.php`
Done
itemsテーブルに対応するモデルがSecoundItemという名称で作成されます。
※bin/cake bake model SecoundItems –table items –no-test –no-fixtureとすれば、テストファイル抜きでモデルが作成されます。
- /Model/Entity/SecoundItem.php
- /Model/Table/SecoundItemsTable.php
- /tests/Fixture/SecoundItemsFixture.php
- /tests/TestCase/Model/Table/SecoundItemsTableTest.php
念のため、Model/Table/SecoundItem.phpの中身を確認すると、$this->setTable(‘items’)とあり、itemsテーブルがセットされていることが確認できましたので、問題ありません。
※itemsテーブルはidとnameのカラムだけ持たせています。
<?php
declare(strict_types=1);
namespace App\Model\Table;
use Cake\ORM\Query;
use Cake\ORM\RulesChecker;
use Cake\ORM\Table;
use Cake\Validation\Validator;
/**
* SecoundItems Model
*
* @method \App\Model\Entity\SecoundItem newEmptyEntity()
* @method \App\Model\Entity\SecoundItem newEntity(array $data, array $options = [])
* @method \App\Model\Entity\SecoundItem[] newEntities(array $data, array $options = [])
* @method \App\Model\Entity\SecoundItem get($primaryKey, $options = [])
* @method \App\Model\Entity\SecoundItem findOrCreate($search, ?callable $callback = null, $options = [])
* @method \App\Model\Entity\SecoundItem patchEntity(\Cake\Datasource\EntityInterface $entity, array $data, array $options = [])
* @method \App\Model\Entity\SecoundItem[] patchEntities(iterable $entities, array $data, array $options = [])
* @method \App\Model\Entity\SecoundItem|false save(\Cake\Datasource\EntityInterface $entity, $options = [])
* @method \App\Model\Entity\SecoundItem saveOrFail(\Cake\Datasource\EntityInterface $entity, $options = [])
* @method \App\Model\Entity\SecoundItem[]|\Cake\Datasource\ResultSetInterface|false saveMany(iterable $entities, $options = [])
* @method \App\Model\Entity\SecoundItem[]|\Cake\Datasource\ResultSetInterface saveManyOrFail(iterable $entities, $options = [])
* @method \App\Model\Entity\SecoundItem[]|\Cake\Datasource\ResultSetInterface|false deleteMany(iterable $entities, $options = [])
* @method \App\Model\Entity\SecoundItem[]|\Cake\Datasource\ResultSetInterface deleteManyOrFail(iterable $entities, $options = [])
*/
class SecoundItemsTable extends Table
{
/**
* Initialize method
*
* @param array $config The configuration for the Table.
* @return void
*/
public function initialize(array $config): void
{
parent::initialize($config);
$this->setTable('items');
$this->setDisplayField('name');
$this->setPrimaryKey('id');
}
/**
* Default validation rules.
*
* @param \Cake\Validation\Validator $validator Validator instance.
* @return \Cake\Validation\Validator
*/
public function validationDefault(Validator $validator): Validator
{
$validator
->integer('id')
->allowEmptyString('id', null, 'create');
$validator
->scalar('name')
->maxLength('name', 255)
->requirePresence('name', 'create')
->notEmptyString('name');
return $validator;
}
}
ココナラと似てるサイト比較11選!【2023年最新版】
この記事ではココナラに似てる副業サイトを11こ紹介しています。 今すぐスキルをお金にするなら、記事で気になったサービスに登録してみましょう。 本記事のゴール ココ…
転職におすすめなサイト11選【リモート・フリーランスも対象】
転職におすすめなサイトが知りたいなぁ… 転職エージェントによって相性があります! この記事では、フリーランスの方でも利用できる転職におすすめなサイトを紹介しま…
休日で空いた時間の暇つぶしを探せるアプリを公開しています。
コメント