小编hat*_*ila的帖子

在Doctrine DQL查询中使用COLLATE(Symfony2)

我找不到与使用Doctrine进行DQL查询时使用COLLATE相关的任何内容(当然它似乎不起作用).

我的具体问题:

我有一张带utf8_general_cicharset 的桌子.我有一个具有重音字符的特定字段(如'á','ű','ő'等)

一个基本的比较utf8_general_ci是无法确定常规字符和它们的重音对之间的区别(a =á,u =ű,o =ő),对于我来说,对于大多数落在那张桌子上的查询来说这是完全正常的!所以,如果我让我们说:

 col1 |  col2
------|-------
   1  | árvíz  
------|-------
   2  | arviz
Run Code Online (Sandbox Code Playgroud)

此查询将返回两个结果:

SELECT * FROM `table` WHERE `col2` = 'arviz'
Run Code Online (Sandbox Code Playgroud)

同样,对于大多数用例来说,这对我来说非常好!

但是有一个特定的功能,我需要确定差异,在常规MySQL我可以使用:

SELECT * FROM `table` WHERE `col2` COLLATE utf8_bin = 'arviz'
Run Code Online (Sandbox Code Playgroud)

这仅返回非重音版本.

问题是,可以使用Doctrine的createQuery(编写dql)或查询构建器来完成这样的事情吗?

我想我已经阅读了所有相关文档,但找不到办法做到这一点.有可能吗?

php dql symfony doctrine-orm

5
推荐指数
1
解决办法
2759
查看次数

DQL select语句中的参数(Symfony2/Doctrine)

我试图在DQL-s SELECT部分​​中使用外部参数,但由于错误它不起作用.

我在尝试什么:

$query = $this->getEntityManager()
    ->createQuery("
        SELECT me.column_one, :param_doesnt_work param
        FROM CompanyMyBundle:MyEntity me
        WHERE me.column_one = :param_one
        AND me.column_two = :param_two
    ")->setParameters(array(
        'param_doesnt_work' => 'A static value',
        'param_one' => 'some param',
        'param_two' => 'another param',
    ));
Run Code Online (Sandbox Code Playgroud)

我希望得到两列,结果是'column_one'的值和Select中的param值(在这种情况下为'静态值'作为参数).

我收到以下错误:

错误:期望的IdentificationVariable | ScalarExpression | AggregateExpression | 功能声明| PartialObjectExpression | "("Subselect")"| CaseExpression,得到':param_doesnt_work'

是否有可能在那里使用参数,或者有一个完全不同的解决方案呢?找不到任何例子.

php dql symfony doctrine-orm

3
推荐指数
1
解决办法
2725
查看次数

标签 统计

doctrine-orm ×2

dql ×2

php ×2

symfony ×2