duanmeng1862 2015-04-01 21:20
浏览 257
已采纳

Yii createCommand不会返回正确的结果

I am trying to get a random ID from a table with a specific visiblity=2 clause but I am having issues getting it to return the ID, it says 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'];

Is his not the correct way?

I figured out another solution using the already loaded info from my original version without guest check.

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

3条回答 默认 最新

  • dsigh7478 2015-04-01 21:50
    关注

    You can use ORDER BY RAND() instead of id = rand(). Also you can use ->queryScalar() to get only ID directly.

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

    Keep in mind that RAND() is slow solution. Check alternatives.
    Also, if you get no entries from database, you have to check that case:

    if (!empty($space)) { // id will never be 0
        // Do something with $space
    } else {
        throw new CHttpException(404, 'No data found');
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)
编辑
预览

报告相同问题?

悬赏问题

  • ¥15 方波信号时频特征分析/信号调制与解调过程分析/利用DFT分析信号频谱
  • ¥20 两台硬件相同的琴设备一个是高阶版,怎么扒到初阶版
  • ¥30 matlab求解周期与坐标
  • ¥15 MATLAB图片转灰度格式问题
  • ¥15 把h5作品链接复制到自己的账号里
  • ¥15 ensp抓包实验配置
  • ¥15 强化学习算法、MRO
  • ¥15 想要学习一门技术来保证以后能够吃上碗饭,该学什么好
  • ¥100 对这段代码用Astro进行layout,用redhawk进行ir drop 的测试和分析,以及降低ir drop 的方法和实现
  • ¥20 matlab绘冲床平面连杆机构图和仿真,求帮助
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部