gpt4 book ai didi

php - Yii createCommand 不返回正确的结果

转载 作者:行者123 更新时间:2023-11-30 22:46:44 25 4
gpt4 key购买 nike

我试图从具有特定 visiblity=2 子句的表中获取随机 ID,但我在让它返回 ID 时遇到问题,它说 Undefined index: id.

     $space = Yii::app()->db->createCommand()
->select('id')
->from('space')
->where('id=rand() AND visibility=2')
->limit(1)
->queryAll();
//->queryRow();
echo $space['id'];

他的方法不对吗?

我想出了另一个解决方案,使用我的原始版本中已加载的信息,无需访客检查。

    $max = Space::model()->count();
$randId = rand(0,$max);
$space = Space::model()->find(array('offset'=>$randId));
if ($space->attributes['visibility'] == 2) {

最佳答案

您可以使用 ORDER BY RAND() 而不是 id = rand()。您也可以使用 ->queryScalar() 直接获取 ID。

$space = Yii::app()->db->createCommand()
->select('id')
->from('space')
->where('visibility = 2')
->order('RAND()')
->limit(1)
->queryScalar();

echo $space;

请记住 RAND() 是一个缓慢的解决方案。 Check alternatives .
另外,如果你没有从数据库中得到任何条目,你必须检查这种情况:

if (!empty($space)) { // id will never be 0
// Do something with $space
} else {
throw new CHttpException(404, 'No data found');
}

关于php - Yii createCommand 不返回正确的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29405488/

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