を使用して入力します存在しないフィールドnewdatetimeのデータ定義。 Cakephp-3.x: How to change the data type of a selected alias?に基づいて、私は次のことを試してみました:オーバーライドcakephpの3.1データは、私は、クエリを持っている場合にタイプマップ()
debug($jobs->typeMap());
$jobs->typeMap()->addDefaults([
'Jobs.newdatetime' => 'datetime',
'newdatetime' => 'datetime',
]);
debug($jobs->typeMap());
$results = $jobs->all();
debug($results);
最初はそれがたTypeMapが正常に更新されたことが表示され、ここでは古いバージョンです:
/src/Controller/Admin/JobsController.php(ライン97)
object(Cake\Database\TypeMap) {
[protected] _defaults => [
'Jobs.id' => 'integer',
'id' => 'integer',
'Jobs.existingdatetime' => 'datetime',
'existingdatetime' => 'datetime'
]
[protected] _types => []
}
そして、データ型は罰金更新されていることが表示されます)(addDefaultsを呼び出した結果として、新しいバージョン...
/SRC/CONTR oller /管理/ JobsController.php(ライン102)
object(Cake\Database\TypeMap) {
[protected] _defaults => [
'Jobs.id' => 'integer',
'id' => 'integer',
'Jobs.existingdatetime' => 'datetime',
'existingdatetime' => 'datetime',
'Jobs.newdatetime' => 'datetime'
'newdatetime' => 'datetime',
]
[protected] _types => []
}
それでも、結果はまだ文字列としてnewdatetimeを有する:
/src/Controller/Admin/JobsController.php(ライン106)
object(Cake\ORM\ResultSet) {
'query' => object(Cake\ORM\Query) {
'(help)' => 'This is a Query object, to get the results execute or iterate it.',
'sql' => 'SELECT Jobs.id AS `Jobs__id`, Jobs.existingdatetime AS `Jobs__existingdatetime`, "2016-05-10 16:12:10" AS `newdatetime` FROM jobs Jobs',
'params' => [],
'defaultTypes' => [
'Jobs.id' => 'integer',
'id' => 'integer',
'Jobs.existingdatetime' => 'datetime',
'existingdatetime' => 'datetime',
'Jobs.newdatetime' => 'datetime'
'newdatetime' => 'datetime',
],
'decorators' => (int) 0,
...snip...
}
'items' => [
(int) 0 => object(App\Model\Entity\Job) {
'id' => (int) 1,
'existingdatetime' => object(Cake\I18n\Time) {
'time' => '2016-04-27T03:21:32+1000',
'timezone' => 'Australia/Melbourne',
'fixedNowTime' => false
},
'newdatetime' => '2016-05-10 16:12:10',
'[new]' => false,
'[accessible]' => [
'*' => true
],
'[dirty]' => [],
'[original]' => [],
'[virtual]' => [],
'[errors]' => [],
'[repository]' => 'Jobs'
}
]
}
私は何が欠けていますか?余分なフィールドを日時にすることができないのはなぜですか?
実際にnewdatetimeフィールドは複雑な左内部結合サブクエリであり、事実を単純にするためにこの質問から取り除いたものです。