二进制或不在Symfony Propel Criteria中工作

时间:2011-06-02 10:12:13

标签: sql symfony-1.4 propel

我正在使用Symfony 1.4和Propel(ORM),我想执行SQL查询(SELECT * FROM 'myblog' WHERE 'blog_title' LIKE '%symfony%' OR 'blog_post' LIKE '%symfony%') 想要从myblog获取包含单词symfony的所有记录。 我把Symfony代码编写为,

$c = new Criteria();
$c->add(MyblogPeer::BLOG_TITLE, "%symfony%", Criteria::LIKE);
$c->addOr(MyblogPeer::BLOG_POST, "%symfony%", Criteria::LIKE);
$my_blog = MyblogPeer::doSelect($c);

但它返回一个空集。给出参数有什么不对吗?

1 个答案:

答案 0 :(得分:3)

我认为为了在where闭包中创建OR,你需要创建一个Criterion,然后将该标准添加到查询中,它应该是这样的:

$c = new Criteria();
$criterion = $c->getNewCriterion(MyblogPeer::BLOG_TITLE, "%symfony%", Criteria::LIKE);
$criterion->addOr($c->getNewCriterion(MyblogPeer::BLOG_POST, "%symfony%", Criteria::LIKE));
$c->add($criterion);
$my_blog = MyblogPeer::doSelect($c);