php - 使用 Laravel Doctrine 的 InvalidFieldNameException

标签 php doctrine-orm laravel-5 doctrine

我正在将我的 Zend Framework 1 应用程序转换为 Laravel 应用程序。我使用的是 Doctrine,所以我将模型移到了 Laravel。我正在使用 laravel-doctrine

字段是用 camelCase 编写的,当通过 doctrine 创建数据库时,它们也是用 camelCase 创建的,如下所示:

/**
 * @ORM\Entity (repositoryClass="Repositories\Customer")
 * @ORM\Table(name="customers")
 * @ORM\HasLifecycleCallbacks
 */
class Customer
{
    /**
     * @ORM\Id @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /** @ORM\Column(type="string", length=255, nullable=true) */
    protected $firstName;

    /** @ORM\Column(type="string", length=255, nullable=true) */
    protected $lastName;

    /** @ORM\Column(type="string", length=255, nullable=true) */
    protected $companyName;

当我执行 EntityManager::find('App\Entities\Customer', 1); 时,我收到此错误:

An exception occurred while executing 'SELECT t0.id AS id_1, t0.firstName AS firstName_2, t0.lastName AS lastName_3, t0.company_name AS company_name_4, t0.email AS email_5, t0.phone_number AS phone_number_6, t0.type AS type_7, t0.created AS created_8, t0.updated AS updated_9, t0.jobsource_id AS jobsource_id_10 FROM customers t0 WHERE t0.id = ?' with params 1: SQLSTATE[42S22]: Column not found: 1054 Unknown column 't0.company_name' in 'field list'

寻找下划线是有原因的吗?我有办法改变它吗?

我正在使用 PHP 7.0.1

最佳答案

laraveldoctrine.org 支持自定义命名策略:

Doctrine\ORM\Mapping\DefaultNamingStrategy 可能就是您正在寻找的那个。

在 doctrine.php 配置文件中:(在您将其发布到您的项目之后)

'managers'                  => [
        'default' => [
            'naming_strategy' => 'Doctrine\ORM\Mapping\DefaultNamingStrategy',
            'dev'        => env('APP_DEBUG'),
            'meta'       => env('DOCTRINE_METADATA', 'annotations'),
            'connection' => env('DB_CONNECTION', 'mysql'),
            'paths'      => [
                base_path('app')
            ],
           ....
      ]
]

如果您想要一个自定义的,请根据以下内容实现命名策略:http://doctrine-orm.readthedocs.org/projects/doctrine-orm/en/latest/reference/namingstrategy.html

关于php - 使用 Laravel Doctrine 的 InvalidFieldNameException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35029003/

相关文章:

php - 从两行中获取每个值的差异

php - 如何使用auth中间件来管理不同用户类型的登录/重定向?

php - twig 和 Symfony2 中的高级路由参数处理

php - 如何使用 Twilio PHP 库在 gather 语句中嵌套动词?

entity-framework - Symfony 2.3 使用选择或其他类型将自定义数据传递给实体表单

php - 内存使用随着 Doctrine 批量插入变得疯狂

php - IP 地址验证帮助

php - 多维数组的AJAX POST-用PHP写入MYSQL数据库

design-patterns - 如何使用 Symfony2 和 Doctrine 2 及其设计模式制作具体的复杂模型逻辑?

php - 如何在 Laravel 中验证数组?