我在Symfony2中过滤了一个与" start_date"属性。这是DB中的值,它有一个Doctrine生成的getStartDate getter。在filter方法中,我使用
的表达式Criteria::expr()->gt('start_date', $now)
但是因访问受保护的属性而出错。如果我将标准更改为
Criteria::expr()->gt('startDate', $now)
它再次失败,但这次有一个关于没有该对象的属性的错误。哪个是对的?我不需要为标准过滤添加单独的获取。
答案 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将会工作