CakePHP 3:关联 属性 名称与 table 的同名字段冲突
CakePHP 3 : Association property name clashes with field of same name of table
我正在使用 CakePHP 3.2。我有两个 tables service_requests
和 coupon_history
service_requests
table
CREATE TABLE `service_requests` (
`id` char(36) NOT NULL,
`request_id` bigint(20) NOT NULL,
`user_id` char(36) NOT NULL,
`user_address_id` char(36) NOT NULL,
`service_id` char(36) NOT NULL,
`service_area_id` char(36) NOT NULL,
`coupon_used` int(11) NOT NULL DEFAULT '0' COMMENT '0: Not Applied; 1: Applied',
`coupon_used_id` char(36) NOT NULL,
`status_code` int(11) NOT NULL,
`status` varchar(50) NOT NULL,
`created` datetime NOT NULL,
`modified` datetime NOT NULL
)
coupon_history
table
CREATE TABLE `coupon_history` (
`id` char(36) NOT NULL,
`user_id` char(36) NOT NULL,
`coupon_id` char(36) NOT NULL,
`service_request_id` char(36) DEFAULT NULL,
`created` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`modified` datetime NOT NULL
)
当我烘烤 service_requests
table 时
bin/cake bake all service_requests
It 警告错误为
Association property name "coupon_used" clashes with field of same name of table "service_requests". You should explicitly specify the "propertyName" option. in [/var/www/html/flitfix/admin2/vendor/cakephp/cakephp/src/ORM/Association.php, line 445]
2016-07-01 07:17:32 Warning: Warning (512): Association property name "coupon_used" clashes with field of same name of table "service_requests". You should explicitly specify the "propertyName" option. in [/var/www/html/flitfix/admin2/vendor/cakephp/cakephp/src/ORM/Association.php, line 445]
Trace:
Cake\Error\BaseErrorHandler::handleError() - CORE/src/Error/BaseErrorHandler.php, line 146
Cake\ORM\Association::property() - CORE/src/ORM/Association.php, line 445
Bake\Utility\Model\AssociationFilter::filterAssociations() - ROOT/vendor/cakephp/bake/src/Utility/Model/AssociationFilter.php, line 94
Bake\Shell\Task\TemplateTask::_filteredAssociations() - ROOT/vendor/cakephp/bake/src/Shell/Task/TemplateTask.php, line 465
Bake\Shell\Task\TemplateTask::_loadController() - ROOT/vendor/cakephp/bake/src/Shell/Task/TemplateTask.php, line 295
Bake\Shell\Task\TemplateTask::main() - ROOT/vendor/cakephp/bake/src/Shell/Task/TemplateTask.php, line 147
Bake\Shell\BakeShell::Bake\Shell\{closure}() - ROOT/vendor/cakephp/bake/src/Shell/BakeShell.php, line 252
Cake\Collection\Collection::each() - CORE/src/Collection/CollectionTrait.php, line 51
Bake\Shell\BakeShell::all() - ROOT/vendor/cakephp/bake/src/Shell/BakeShell.php, line 253
Cake\Console\Shell::runCommand() - CORE/src/Console/Shell.php, line 444
Cake\Console\ShellDispatcher::_dispatch() - CORE/src/Console/ShellDispatcher.php, line 221
Cake\Console\ShellDispatcher::dispatch() - CORE/src/Console/ShellDispatcher.php, line 181
Cake\Console\ShellDispatcher::run() - CORE/src/Console/ShellDispatcher.php, line 127
[main] - ROOT/bin/cake.php, line 33
之前有 coupon_used
table ,我将其重命名为 coupon_history
并删除了所有名为 coupon_used
的 controller, model and template
并尝试再次烘烤 coupon_history
但它给出了错误。
我尝试了一个由作曲家创建的新项目,但同样的错误也在那里。
正如警告所说,字段名称 "coupon_used" 与 coupon_useds table 属性 之间存在冲突,即 coupon_used。这是因为 CakePHP 的默认规则。
您应该将字段名称 "coupon_used" 或 coupun_useds table 属性 更改为 service_requests table 模型中的另一个名称。
class ServiceRequests extends Table{
....
//assumption if association is belongsTo
$this->belongsTo('CouponUsed',['propertyName' => 'AnotherCouponUsed']);
....
}
请参考下文link。 属性 名称要这样定义。
$this->belongsTo('ProductPrices', [
'foreignKey' => 'product_price_id',
'className' => 'ProductPrices',
'propertyName' => 'prod_price'
]);
我正在使用 CakePHP 3.2。我有两个 tables service_requests
和 coupon_history
service_requests
table
CREATE TABLE `service_requests` (
`id` char(36) NOT NULL,
`request_id` bigint(20) NOT NULL,
`user_id` char(36) NOT NULL,
`user_address_id` char(36) NOT NULL,
`service_id` char(36) NOT NULL,
`service_area_id` char(36) NOT NULL,
`coupon_used` int(11) NOT NULL DEFAULT '0' COMMENT '0: Not Applied; 1: Applied',
`coupon_used_id` char(36) NOT NULL,
`status_code` int(11) NOT NULL,
`status` varchar(50) NOT NULL,
`created` datetime NOT NULL,
`modified` datetime NOT NULL
)
coupon_history
table
CREATE TABLE `coupon_history` (
`id` char(36) NOT NULL,
`user_id` char(36) NOT NULL,
`coupon_id` char(36) NOT NULL,
`service_request_id` char(36) DEFAULT NULL,
`created` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`modified` datetime NOT NULL
)
当我烘烤 service_requests
table 时
bin/cake bake all service_requests
It 警告错误为
Association property name "coupon_used" clashes with field of same name of table "service_requests". You should explicitly specify the "propertyName" option. in [/var/www/html/flitfix/admin2/vendor/cakephp/cakephp/src/ORM/Association.php, line 445]
2016-07-01 07:17:32 Warning: Warning (512): Association property name "coupon_used" clashes with field of same name of table "service_requests". You should explicitly specify the "propertyName" option. in [/var/www/html/flitfix/admin2/vendor/cakephp/cakephp/src/ORM/Association.php, line 445]
Trace:
Cake\Error\BaseErrorHandler::handleError() - CORE/src/Error/BaseErrorHandler.php, line 146
Cake\ORM\Association::property() - CORE/src/ORM/Association.php, line 445
Bake\Utility\Model\AssociationFilter::filterAssociations() - ROOT/vendor/cakephp/bake/src/Utility/Model/AssociationFilter.php, line 94
Bake\Shell\Task\TemplateTask::_filteredAssociations() - ROOT/vendor/cakephp/bake/src/Shell/Task/TemplateTask.php, line 465
Bake\Shell\Task\TemplateTask::_loadController() - ROOT/vendor/cakephp/bake/src/Shell/Task/TemplateTask.php, line 295
Bake\Shell\Task\TemplateTask::main() - ROOT/vendor/cakephp/bake/src/Shell/Task/TemplateTask.php, line 147
Bake\Shell\BakeShell::Bake\Shell\{closure}() - ROOT/vendor/cakephp/bake/src/Shell/BakeShell.php, line 252
Cake\Collection\Collection::each() - CORE/src/Collection/CollectionTrait.php, line 51
Bake\Shell\BakeShell::all() - ROOT/vendor/cakephp/bake/src/Shell/BakeShell.php, line 253
Cake\Console\Shell::runCommand() - CORE/src/Console/Shell.php, line 444
Cake\Console\ShellDispatcher::_dispatch() - CORE/src/Console/ShellDispatcher.php, line 221
Cake\Console\ShellDispatcher::dispatch() - CORE/src/Console/ShellDispatcher.php, line 181
Cake\Console\ShellDispatcher::run() - CORE/src/Console/ShellDispatcher.php, line 127
[main] - ROOT/bin/cake.php, line 33
之前有 coupon_used
table ,我将其重命名为 coupon_history
并删除了所有名为 coupon_used
的 controller, model and template
并尝试再次烘烤 coupon_history
但它给出了错误。
我尝试了一个由作曲家创建的新项目,但同样的错误也在那里。
正如警告所说,字段名称 "coupon_used" 与 coupon_useds table 属性 之间存在冲突,即 coupon_used。这是因为 CakePHP 的默认规则。
您应该将字段名称 "coupon_used" 或 coupun_useds table 属性 更改为 service_requests table 模型中的另一个名称。
class ServiceRequests extends Table{
....
//assumption if association is belongsTo
$this->belongsTo('CouponUsed',['propertyName' => 'AnotherCouponUsed']);
....
}
请参考下文link。 属性 名称要这样定义。
$this->belongsTo('ProductPrices', [
'foreignKey' => 'product_price_id',
'className' => 'ProductPrices',
'propertyName' => 'prod_price'
]);