【问题标题】:Entity name is different then the table name in Cakephp 3实体名称与 Cakephp 3 中的表名称不同
【发布时间】:2016-03-15 22:50:59
【问题描述】:

当我在 Cakephp 3 中创建我的模型时遇到了一个小问题,我必须将表(pistolets 和 cuves)与“hasOne 关联”相关联,问题是当我使用 ./cake bake 创建我的 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 是如何生成代码的?这可能是一个错误还是只是我的错误?

【问题讨论】:

    标签: php entity cakephp-3.0


    【解决方案1】:

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

    在应用屈折变化时,使用非英语单词可能会给您带来意想不到的结果。

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

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

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

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

    另见

    【讨论】:

    • 非常感谢,我在谷歌上搜索已经 3 天了,我自己从来没有弄明白,谢谢你的链接,我非常感激
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-24
    • 1970-01-01
    • 2014-12-28
    • 1970-01-01
    • 2017-07-23
    • 2020-12-19
    • 2012-10-26
    相关资源
    最近更新 更多