当我在Cakephp 3中创建我的模型时,我有一点问题,我必须与“hasOne关联”相关的表(手枪和诅咒),问题是当我使用./cake烘焙创建我的Cuves模型时,我得到了一个实体名为Cufe,我不知道该名称来自何处,当我调用$pistolets = $this->Pistolets->find('all')->contain('Cuves');
时,我也会得到一个看起来像这样的对象:
[id] => 1
[libelle] => P1
[volumetrique_id] => 1
[cuve_id] => 1
[pompiste_id] => EE324925
[date_affectation] => Cake\I18n\FrozenTime Object
(
[date] => 2016-03-10 00:00:00
[timezone_type] => 3
[timezone] => UTC
)
[cufe] => Cake\ORM\Entity Object
(
[_properties:protected] => Array
(
[id] => 1
[libelle] => C1
[capacite] => 2000
[carburant_id] => 1
)
我检查了我编写的每一段代码,并且我可以在其中找到任何单词Cufes
,有人可以解释一下cakephp 3如何生成代码吗?它可能是一个错误,还是我的错误?
答案 0 :(得分:0)
Bake遵循CakePHP命名约定,它们是基于英语的,实体名称按照惯例是表名的单数变体。
使用非英语单词可能会在应用变形时出现意外结果。
<强> http://sandbox3.dereuromark.de/sandbox/inflector?string=cuves 强>
理想情况下,您不应该使用当地语言进行编程,但在英语版本中,这不仅有助于未来的开发人员,而且无论出于何种原因,他们也会查看您的代码,它也可以解决这个问题。
话虽如此,一种解决方法是添加自定义变形(您可以在引导程序中设置它们)
\Cake\Utility\Inflector::rules('irregular', ['cuve' => 'cuves']);
另见