在Select语句返回异常中使用变量的DQL查询

时间:2017-05-28 23:23:19

标签: symfony doctrine dql

我得到了这个例外:

[语义错误]第0行,第124行靠近'column =:column':错误:'column'未定义。

尝试运行此代码时:

$yy = $this->getStatsByDQL($usr, 'bench_press_1_weight');
    var_dump($yy);

以下是它的执行方式:

import os
username = "Chad_Wigglybutt"
file = open("testfile.txt", "w")
file.write("Hello .txt file, ")
file.write("This is a test, ")
file.write("Can this write variables? ")
file.write("Lets see: ")
file.write(username)
file.close()

当'g.column'被'bench_press_1_weight'替换时,这个DQL查询运行正常,但是当g.column放在那里时会出错。我应该通过认为'bench_press_1_weight',因为我在参数'column'=>中设置了$列。对我来说,这应该有效。我没有发现Doctrine文档有任何用处,并尝试过无数种组合。

此功能在我的默认控制器中。

任何人都有线索吗?提前谢谢!

3 个答案:

答案 0 :(得分:0)

尝试更改此

    ->setParameters(array(
        'user' => $user, 'column' => $column, 'date' => $midNight,
    ))
    ->where('user = :user', 'g.timestamp < :date',  'column = :column')

    ->where('user = :user', 'g.timestamp < :date',  'column = :column')
    ->setParameters(array(
        'user' => $user, 'column' => $column, 'date' => $midNight,
    ))

答案 1 :(得分:0)

尝试更改此

->setParameters(array(
    'user' => $user, 'column' => $column, 'date' => $midNight,
))
->where('user = :user', 'g.timestamp < :date',  'column = :column')

有了这个

尝试更改此

->setParameters(array(
    'user' => $user, 'column' => $column, 'date' => $midNight,
))
->where('g.user = :user', 'g.timestamp < :date',  'g.column = :column')

答案 2 :(得分:0)

我已经解决了这个问题,这很简单,我几乎开枪自杀了。所以需要发生的是从params和WHERE语句中删除函数签名中引入的变量,它看起来像这样:

{{1}}

这将返回我所追踪的正确数据,即所请求的列及其内容。感谢大家的投入。非常感激。 :)