gpt4 book ai didi

yii - 从数据库中获取特定数据

转载 作者:行者123 更新时间:2023-12-04 22:09:47 26 4
gpt4 key购买 nike

我有一个名为 Category 的表,其中包含几列,我正试图从我的数据库中只获取几列。

所以我试过这个:

$sql = 'SELECT uppercat AS id, COUNT(uppercat) AS uppercat FROM category GROUP BY uppercat;';
$d = Yii::app()->db->createCommand($sql)->query();

但我发现输出很奇怪。我试图做一个 array_shift 但我得到一个错误,这不是一个数组。当我对 $d 执行 var_dump 时:

object(CDbDataReader)[38]
private '_statement' =>
object(PDOStatement)[37]
public 'queryString' => string 'SELECT uppercat AS id, COUNT(uppercat) AS uppercat FROM category GROUP BY uppercat;' (length=100)
private '_closed' => boolean false
private '_row' => null
private '_index' => int -1
private '_e' (CComponent) => null
private '_m' (CComponent) => null

好的..然后我在 $id 上做了一个 foreach:

array
'id' => string '0' (length=1)
'uppercat' => string '6' (length=1)
array
'id' => string '3' (length=1)
'uppercat' => string '2' (length=1)
array
'id' => string '6' (length=1)
'uppercat' => string '1' (length=1)
array
'id' => string '7' (length=1)
'uppercat' => string '2' (length=1)
array
'id' => string '9' (length=1)
'uppercat' => string '2' (length=1)

那为什么我会收到 $id 不是数组的消息,而它包含数组?

是否有任何其他方法可以从我的数据库中获取一些特定数据,然后我可以对它们进行 array_shift?我也尝试过使用 findAllBySql 来执行此操作,但是我无法访问不在我的模型中的 COUNT(uppercat) 属性。我想我必须将它添加到我的模型中,但我不喜欢那样,因为我只需要它一次。

最佳答案

CDbCommand 的 query返回一个用于获取查询结果的 CDbDataReader 对象。使用 queryAll相反,它返回一个行数组。

但是,如果您使用 CDbCriteria 来执行它会更好(您需要一个模型属性,您是对的)。

它看起来像这样,假设该属性名为 countUppercat

$criteria = new CDbCriteria;
$criteria->select = 'uppercat, COUNT(uppercat) AS countUppercat';
$criteria->group = 'countUppercat';
$models = CategorieModel::model()->findAll($criteria);

关于yii - 从数据库中获取特定数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10820529/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com