0

我有一个疑问:

$query = 
  Yii::app()->db->createCommand()->setFetchMode(PDO::FETCH_OBJ)
    ->select('*')
    ->from('products p')
    ->limit(5);

然后我得到了结果:

$result = $query->queryAll();

如何在不重写的情况下使用现有查询对象来重新实例化“select”和“limit”的值。我想将选择更改为“count(p.productid)”并取消设置限制。我尝试了以下方法,但它不起作用:

$query = 
  Yii::app()->db->createCommand()->setFetchMode(PDO::FETCH_OBJ)
    ->select('*')
    ->from('products p')
    ->limit(5);

$result = $query->queryAll();


$query = 
  $query
    ->select('count(p.productid)')
    ->limit(-1);
$result2 = $query->queryRow();

这仍然返回第一个选择的结果?

编辑

基本上,我想重置选择。看起来它建立在选择之上。所以,我认为你可以这样做:

$query = 
 $query->select('something')
    ->select('somethingElse')
    ->select('somethingMoreStuff');

我的问题是我想“重置”选择。所以基本上UNDO这些选择。这可能吗?

4

1 回答 1

0

你为什么不这样做:

$intialQuery = 
  Yii::app()->db->createCommand()->setFetchMode(PDO::FETCH_OBJ)
    ->from('products p');

$query = $intialQuery 
    ->select('*')
    ->limit(5);

$query2 = $intialQuery
    ->select('count(p.productid) as number')
    ->limit(-1);

$result = $query->queryAll();
$result2 = $query2->queryRow();
于 2013-03-14T08:52:34.143 回答