我需要取代理人的姓名,计数(身份证),国际单项体育联合会代码,地区代码。
使用静态查询时,一切正常:
$result = db_query('SELECT agent_name, count(id) as count, ifs_code, area_code FROM declarations WHERE fisccode = :idno GROUP BY agent_name', array(':idno' => $fisccode))->fetchAll();
此查询的结果:
/report5.inc:82: array (size=1) 0 => object(stdClass)[10] public 'agent_name' => string 'GHEOLARIS S.A' (length=13) public 'count' => string '3' (length=1) public 'ifs_code' => string '02' (length=2) public 'area_code' => string '0110' (length=4)
但是我不明白如何在动态查询中把count(id)作为count。
我试试这个:
$result = db_select('declarations', 'd')
->fields('d', array('agent_name', 'ifs_code', 'area_code'))
->addExpression('COUNT(id)', 'count') // I THINK I DO SOMETHING WRONG ON THIS LINE
->condition('fisccode', $fisccode)
->groupBy('agent_name')
->range($context['sandbox']['progress'], 10);
$result->execute()->featchAll();
addexpression打破了所有的,在这一行之后phpstorm给我这个警告:在字符串中找不到方法'condition'
在drupal日志中,我有一个错误:调用字符串上的成员函数condition()
请帮帮我!!!
1条答案
按热度按时间tv6aics11#
我认为问题是不是所有的数据库api函数都可以链接。请提供一个通读数据库api链接,说明:
无法链接的函数:
addExpression()
addField()
addJoin()extend()
innerJoin()join()
leftJoin()rightJoin()
您共享的错误也表明了这一点,因为它似乎condition()
使用后的错误addExpression()
不会返回数据库对象。因此,对于动态查询,最好准备一个
$query
在赋值给$result
: