Doctrine2条件过滤无法找到属性

时间:2014-01-21 14:54:49

标签: symfony doctrine-orm

我在Symfony2中过滤了一个与" start_date"属性。这是DB中的值,它有一个Doctrine生成的getStartDate getter。在filter方法中,我使用

的表达式
Criteria::expr()->gt('start_date', $now)

但是因访问受保护的属性而出错。如果我将标准更改为

Criteria::expr()->gt('startDate', $now)

它再次失败,但这次有一个关于没有该对象的属性的错误。哪个是对的?我不需要为标准过滤添加单独的获取。

1 个答案:

答案 0 :(得分:1)

正确是第一种情况:

Criteria::expr()->gt('start_date', $now)

是公开的吗?尝试公开此属性。在这种情况下是否仍然显示错误?

还尝试添加下一个用于测试的getter:

public function start_date(){};

public function getStart_date(){};

您必须将代码更正为

/** 
 * @ORM\Column(type="datetime", name="start_date") 
 */

protected $startDate; 

public function getStartDate() {

    return $this->startDate;
}

然后使用:

Criteria::expr()->gt('startDate', $now)

Symfony需要以camelCase风格调用你的属性,然后camelCase getter将会工作