【问题标题】:Doctrine2, Symfony2. Oracle Error:Class has no field or association named user_id教义2,Symfony2。 Oracle 错误:类没有名为 user_id 的字段或关联
【发布时间】:2015-09-15 05:15:40
【问题描述】:

我试图从一个简单的查询中返回数据,但我收到以下错误:

未捕获的 PHP 异常 Doctrine\ORM\Query\QueryException: "[Semantical 错误]第0行,'user_id =:u'附近的第63列:错误:类 \Bundle\MyBundle\Entity\User\Users 没有名为的字段或关联 user_id”在 ...../doctrine/orm/lib/Doctrine/ORM/Query/QueryException.php 第 49 行

实体:

    /**
* Users
*
* @ORM\Table(name="company.users")
* @ORM\Entity
*/
class Users
{
    /**
     * @var integer
     *
     * @ORM\Column(name="user_id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     * @ORM\SequenceGenerator(sequenceName="company.user_id_seq")
     */
    private $userId;

控制器中的调用:

$query = $em->createQuery(
    'SELECT u
    FROM MyBundle:User\Users u
    WHERE u.user_id = :user_id'
)->setParameter('user_id', 48201);

$users = $query->getResult();

【问题讨论】:

    标签: php oracle symfony doctrine-orm


    【解决方案1】:

    在使用 DQL 时,您需要忘记 SQL。您应该使用实体而不是数据库中定义的列名 - 使用 userId 而不是 user_id

    $query = $em->createQuery(
        'SELECT u
        FROM MyBundle:Users u
        WHERE u.userId = :user_id'
    )->setParameter('user_id', 48201);
    

    我也不确定MyBundle:User\Users 语法。你为什么不使用 MyBundle:Users

    【讨论】:

    • 我两种方式都试过了。 userId 和 user_id 结果相同。
    • 你的实体文件顶部有use Doctrine\ORM\Mapping as ORM;吗?
    • 是的,我有 Doctrine\ORM\Mapping 语句。至于使用 MyBundle:User\Users.....User 是包含所有实体类别的文件夹的子文件夹。所以有一个客户文件夹、产品文件夹等,每个文件夹都包含这些类别的实体类
    • 那么您是说当您将查询user_id 更改为userId 时会得到相同的结果吗? (意思是错误消息说user_id丢失)
    • 是的,同样的错误接受它说'没有名为 userId 的字段或关联
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-31
    • 2015-01-09
    • 1970-01-01
    相关资源
    最近更新 更多