PHP Symfony DQL - 参数太少:查询定义了 1 个参数,但您只绑定了 0 个

天际21.86

我正在尝试在 symfony 存储库项目中组合一个 SELECT 但由于某种原因在主题中收到错误消息。已经研究了几天,但找不到具有不同代码变体的解决方案。这是代码

$qb3 = $this->getEntityManager()->createQueryBuilder();
$qb3-> select('check.userid')
    -> from('App\Entity\YY_Table', 'check')
    -> where('DATE_FORMAT(now(), \'%e-%b-%Y\') - DATE_FORMAT(check.datecreated, \'%e-%b-%Y\') <=360');

$qb2 = $this->getEntityManager()->createQueryBuilder();
$qb2-> select('((:numemails1 / COUNT(subs.id)) * 10)')
    -> from('App\Entity\XX_Table', 'subs')
    -> where($qb2->expr()->notIn('subs.id', $qb3->getDQL()))
    -> setParameter('numemails1', $numemails);
$rand_num = $qb2->getQuery()->getResult();

$qb1 = $this->getEntityManager()->createQueryBuilder();
$qb1-> select('subss.id')
    -> from('App\Entity\XX_Table', 'subss')
    -> where('RAND() < :sqbresult')
    -> orderBy('RAND()')
    -> setMaxResults($numemails)
    -> setParameter('sqbresult', $rand_num);

/*primary query to select users for future campaigns*/
$qb = $this->getEntityManager()->createQueryBuilder();
$qb -> select('s')
    -> from('App\Entity\XX_Table', 's')
    -> where($qb->expr()->In('s.id', $qb1->getDQL()));
    //-> where($expr->not($expr->exists($qb1->getDQL())));
return $qb ->getQuery() ->getResult();

我正在尝试使用下面的 .sql 代码的替代方法,以从通过一些基本标准的 DB 中选择随机实体

SELECT 
g.* FROM XX_table g
JOIN
    (SELECT 
         id
     FROM
         XX_table
     WHERE
         RAND() < (SELECT 
                    ((60000 / COUNT(*)) * 10) as rand_num
                   FROM
                    XX_table
                   WHERE 
                    id NOT IN (SELECT userID as id FROM YY_table emst WHERE CURDATE() - emst.datecreated <=360)
                  )
     ORDER BY RAND()
     LIMIT 60000) AS z ON z.id= g.id

我在这里检查了答案:参数太少:查询定义了 1 个参数,但您只绑定了 0和这里https://github.com/stwe/DatatablesBundle/issues/685,感觉解决方案在某个地方很近但无法解决

简短的回答是您需要实际调用:

$qb->setParameter('sqbresult', $rand_num)

在最后一行之前。事实上,没有理由调用它$qb1,因为它基本上会被丢弃。

这样做的原因是,在上面的代码中,您基本上只是$qb1用作 DQL 生成机制。调用时不会传递在此设置的任何参数getDQL,仅传递此时 DQL 的字符串值。

如果你var_dump($qb->getDQL())在结束之前,你会看到类似的东西:

SELECT s FROM App\Entity\XX_Table s WHERE s.id IN (
         SELECT subss.id FROM App\Entity\XX_Table subss
                         WHERE RAND() < :sqbresult
                         ORDER BY RAND() ASC
)

显示:sqbresult仍保留在 DQL 中,因此需要设置参数。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

参数太多:查询定义了0个参数,并且您绑定了1个错误

来自分类Dev

函数的参数太少,传递了0个参数,在Laravel中恰好期望1个参数

来自分类Dev

Android错误:绑定参数过多。提供了1个参数,但该语句需要0个参数

来自分类Dev

ProtocolViolation:错误:绑定消息提供0个参数,但准备好的语句“”需要1个

来自分类Dev

ProtocolViolation:错误:绑定消息提供0个参数,但准备好的语句“”需要1个

来自分类Dev

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

来自分类Dev

“接受0个位置参数但给了1个”错误

来自分类Dev

警告:fflush()恰好需要1个参数,给定0个

来自分类Dev

TypeError:恰好接受1个参数(给定0个)-Scrapy

来自分类Dev

模板标签需要0个参数,提供了1个

来自分类Dev

std :: greater <int>()预期有0个参数(或1个参数),提供了2个,为什么?

来自分类Dev

SQLite:由于索引超出范围,因此无法在索引1处绑定参数。该语句具有0个参数

来自分类Dev

signup()恰好接受1个参数(给定0)

来自分类Dev

TypeError:main()恰好接受1个参数(给定0)

来自分类Dev

警告:PDO::exec() 需要 1 个参数,0 给定 in(...)

来自分类Dev

在DQL查询中联接两个实体

来自分类Dev

在DQL查询中联接两个实体

来自分类Dev

Typescript给我一个错误:预期有0个参数,但有1个

来自分类Dev

传递给函数App \ Http \ Controllers的参数太少,传递了1个,恰好期望2个

来自分类Dev

函数 App\Http\Controllers\RakController::update() 的参数太少,1 个通过,正好 2 个预期

来自分类Dev

可变参数模板:候选人期望1个参数,提供0个(推导错误)

来自分类Dev

参数Google \ Client :: authenticate()的参数太少,第41行在google.php中传递了0,并且正好是1

来自分类Dev

选择上一个和下一个记录时,Symfony DQL语法错误

来自分类Dev

Doctrine2 + Symfony2:在绑定到DQL查询之前强制转换值

来自分类Dev

TypeError:destroy()接受0个位置参数,但给出了1个

来自分类Dev

在构造函数中,候选人期望1个参数,提供0个

来自分类Dev

TypeError:接受0个位置参数,但给出了1个

来自分类Dev

错误类型:get_dataset_names()接受0个位置参数,但给出了1个

来自分类Dev

警告:number_format()至少应包含1个参数,给定0个

Related 相关文章

  1. 1

    参数太多:查询定义了0个参数,并且您绑定了1个错误

  2. 2

    函数的参数太少,传递了0个参数,在Laravel中恰好期望1个参数

  3. 3

    Android错误:绑定参数过多。提供了1个参数,但该语句需要0个参数

  4. 4

    ProtocolViolation:错误:绑定消息提供0个参数,但准备好的语句“”需要1个

  5. 5

    ProtocolViolation:错误:绑定消息提供0个参数,但准备好的语句“”需要1个

  6. 6

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

  7. 7

    “接受0个位置参数但给了1个”错误

  8. 8

    警告:fflush()恰好需要1个参数,给定0个

  9. 9

    TypeError:恰好接受1个参数(给定0个)-Scrapy

  10. 10

    模板标签需要0个参数,提供了1个

  11. 11

    std :: greater <int>()预期有0个参数(或1个参数),提供了2个,为什么?

  12. 12

    SQLite:由于索引超出范围,因此无法在索引1处绑定参数。该语句具有0个参数

  13. 13

    signup()恰好接受1个参数(给定0)

  14. 14

    TypeError:main()恰好接受1个参数(给定0)

  15. 15

    警告:PDO::exec() 需要 1 个参数,0 给定 in(...)

  16. 16

    在DQL查询中联接两个实体

  17. 17

    在DQL查询中联接两个实体

  18. 18

    Typescript给我一个错误:预期有0个参数,但有1个

  19. 19

    传递给函数App \ Http \ Controllers的参数太少,传递了1个,恰好期望2个

  20. 20

    函数 App\Http\Controllers\RakController::update() 的参数太少,1 个通过,正好 2 个预期

  21. 21

    可变参数模板:候选人期望1个参数,提供0个(推导错误)

  22. 22

    参数Google \ Client :: authenticate()的参数太少,第41行在google.php中传递了0,并且正好是1

  23. 23

    选择上一个和下一个记录时,Symfony DQL语法错误

  24. 24

    Doctrine2 + Symfony2:在绑定到DQL查询之前强制转换值

  25. 25

    TypeError:destroy()接受0个位置参数,但给出了1个

  26. 26

    在构造函数中,候选人期望1个参数,提供0个

  27. 27

    TypeError:接受0个位置参数,但给出了1个

  28. 28

    错误类型:get_dataset_names()接受0个位置参数,但给出了1个

  29. 29

    警告:number_format()至少应包含1个参数,给定0个

热门标签

归档