MSSQLテーブル用の、bakeから仕上げた登録画面が、キー自動採取を失敗する
CAKEPHP3の参考書に従ってbakeコマンドで一連を作成しました。DBをMySQLとしたテーブルの登録画面は無事に操作することができました。
当該テーブルのid列がPrimaryキーで自動採取するタイプでしたが、MySQLだった際は無事にキーを自動採取した上でレコードが登録できていた、ということです。
app.phpをMSSQLと接続するための定義に変更して(勿論同じ構造のテーブルを用意した上で)、bakeで一連を仕上げなおしました。レコードの照会・編集・削除・一覧表示のメソッドは無事動作しますが、登録のメソッドだけ正常に行えません。
CakePHP内蔵サーバに現れていたエラー内容を確認すると、id列がemptyという状況のようでした。
標題のとおりの要因=キーの自動採取に失敗していると推察しています。
この状況を打開する手立てはあるのでしょうか?仕上げられたエンティティ内の$_accessibleを編集('id'=>true から 'id'=>false )にしても状況は変わりありませんでした。
ちなみに、MSSQL上の当該テーブルに別の手続き(ManagementStudio)でレコードを登録すると、自動でidが取得されており、DBMS側の問題ではないと受けてとれます。
参考書の中で紹介されたDBMSとは異なるDBMSを選択して、参考書に従った課題の取り組みは無理がありますかね(より実践を意識したくて DBMSにMSSQLを選択しています)
public function validationDefault(Validator $validator)
{
$validator
->integer('id')
->requirePresence('id', 'create')
->notEmpty('id');
$validator
->scalar('title')
->maxLength('title', 50)
->allowEmpty('title');
$validator
->scalar('author')
->maxLength('author', 50)
->allowEmpty('author');
$validator
->integer('price')
->allowEmpty('price');
return $validator;
}