实体名称与Cakephp 3

时间:2016-03-15 22:51:00

标签: php entity cakephp-3.0

当我在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如何生成代码吗?它可能是一个错误,还是我的错误?

1 个答案:

答案 0 :(得分:0)

Bake遵循CakePHP命名约定,它们是基于英语的,实体名称按照惯例是表名的单数变体。

使用非英语单词可能会在应用变形时出现意外结果。

<强> http://sandbox3.dereuromark.de/sandbox/inflector?string=cuves

理想情况下,您不应该使用当地语言进行编程,但在英语版本中,这不仅有助于未来的开发人员,而且无论出于何种原因,他们也会查看您的代码,它也可以解决这个问题。

话虽如此,一种解决方法是添加自定义变形(您可以在引导程序中设置它们)

\Cake\Utility\Inflector::rules('irregular', ['cuve' => 'cuves']);

另见