【问题标题】:Symfony Doctrine "Notice: Uninitialized string offset: 0"Symfony Doctrine“注意:未初始化的字符串偏移量:0”
【发布时间】:2019-11-10 22:01:04
【问题描述】:

我收到一个无法解释的“注意:未初始化的字符串偏移量:0”错误。任何帮助表示赞赏。详情如下:

手动查询数据库(works - 1635 只是一个例子):


SELECT DISTINCT(loc) FROM `post` WHERE author = ANY ( SELECT DISTINCT(author) FROM `post` WHERE loc=1635 );

Symfony 中的存储库——查询结果为“注意:未初始化的字符串偏移量:0”


    $qb2 = $this->createQueryBuilder('p')
      ->select('DISTINCT (p.loc)')
      ->Where('DATE_SUB(CURRENT_DATE(),  :timePer, \'day\') < p.publishedAt')
      ->andWhere('p.author = ANY ( SELECT DISTINCT(p.author) FROM \`post\` WHERE p.loc = :ccc )')
      ->setParameter('timePer', $timePeriodDays)
      ->setParameter('ccc', $passed_ccc)
      ->getQuery();


    $lResult =  $qb2->execute();
    return $lResult;

【问题讨论】:

标签: symfony doctrine any


【解决方案1】:

您的 dql 查询和普通 sql 查询中的逻辑似乎不一样。 dql 查询(没有时间部分)将转换为以下纯 sql:

SELECT DISTINCT(p.loc) FROM `post` p WHERE p.author = ANY ( SELECT DISTINCT(p.author) FROM `post` p1 WHERE p.loc=1635 );

此外,查询生成器正在混合 dql 和 sql,这不起作用(更具体地,使用表名而不是实体名)。您可以尝试使用以下更新版本(将“YourBundle:Post”替换为您的实际 bundle:entity 名称):

$qb2 = $this->createQueryBuilder('p')
    ->select('DISTINCT (p.loc)')
    ->Where('DATE_SUB(CURRENT_DATE(),  :timePer, \'day\') < p.publishedAt')
    ->andWhere('p.author = ANY ( SELECT DISTINCT(p1.author) FROM YourBundle:Post p1 WHERE p1.loc = :ccc )')
    ->setParameter('timePer', $timePeriodDays)
    ->setParameter('ccc', $passed_ccc)
    ->getQuery();

$lResult =  $qb2->execute();
return $lResult;

作为旁注,如果您仍然遇到与最初相同的错误,请您转储您在此查询中使用的参数。

【讨论】:

    猜你喜欢
    • 2018-11-21
    • 1970-01-01
    • 1970-01-01
    • 2017-05-10
    • 1970-01-01
    • 2012-09-21
    • 1970-01-01
    • 2016-06-07
    • 1970-01-01
    相关资源
    最近更新 更多