Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Symfony1 使用spreep将SQL转换为标准_Symfony1_Criteria_Propel - Fatal编程技术网

Symfony1 使用spreep将SQL转换为标准

Symfony1 使用spreep将SQL转换为标准,symfony1,criteria,propel,Symfony1,Criteria,Propel,我有一个sql: SELECT link.ID, link.URL, link.ANCHOR, link.HOME, link.CREATED_AT FROM `link`, `linkcategory` WHERE link.ID=linkcategory.LINK_ID GROUP BY linkcategory.LINK_ID HAVING count(linkcategory.category_id) =(select count(*) from categoria) 我正在尝试生

我有一个sql:

SELECT link.ID, link.URL, link.ANCHOR, link.HOME, link.CREATED_AT 
FROM `link`, `linkcategory`
WHERE link.ID=linkcategory.LINK_ID
GROUP BY linkcategory.LINK_ID 
HAVING count(linkcategory.category_id) =(select count(*) from categoria)
我正在尝试生成标准,这是不起作用的标准:

$c = new Criteria();
$c->addJoin(self::ID, LinkcategoryPeer::LINK_ID);
$c->addAsColumn('catCount','(SELECT COUNT(*) FROM CATEGORIA)');
$c->addGroupByColumn(LinkcategoryPeer::LINK_ID);
$having = $c->getNewCriterion(count(LinkcategoryPeer::CATEGORY_ID),$c->getColumnForAs('catCount'));
$c->addHaving($having); 
return self::doSelect($c);
此条件的返回sql如下所示:

SELECT (SELECT COUNT(*) FROM CATEGORIA) AS catCount 
FROM `link`, `linkcategory` 
WHERE link.ID=linkcategory.LINK_ID 
GROUP BY linkcategory.LINK_ID 
HAVING 1='(SELECT COUNT(*) FROM CATEGORIA)'

我真的不知道为什么标准不能正确地转换sql。有人知道错误在哪里吗?

试试这个查询。我不记得如何使用推进执行
链接。*
。但是我认为拥有的问题在于,您使用的是PHP count函数而不是MySQL函数

$c = new Criteria();
$c->addSelectColumn(self::ID);
$c->addSelectColumn(self::URL);
$c->addSelectColumn(self::ANCHOR);
$c->addSelectColumn(self::HOME);
$c->addSelectColumn(self::CREATED_AT );

$c->addJoin(self::ID, LinkcategoryPeer::LINK_ID);
$c->addGroupByColumn(LinkcategoryPeer::LINK_ID);

$having = $c->getNewCriterion(
  'COUNT('.LinkcategoryPeer::CATEGORY_ID.')'),
  $c->getColumnForAs('catCount')
);
$c->addHaving($having);

return self::doSelect($c);