脚本宝典收集整理的这篇文章主要介绍了cakephp – Cake HABTM查询,按Rand排序(),脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
如果我想从db中返回一个随机项,我可以在ITem模型中按如下方式执行:
$random = $this->find('First',array( 'order' => 'rand()' ));
如果我想找到某个类别中的所有项目(其中Item与类别有HABTM关系),我知道我可以通过$this-> Categories-> find获得结果集.
我的问题是:如何将两者结合起来,以便我可以返回属于指定类别的随机项?有什么简单的方法吗? (如果没有,我会很乐意采取任何建议,只要它有效;)
ETA:我可以通过Containable获得一些方法,也许:说我添加了这条线
'contain' => array('Categories'=>array('conditions'=>array('Categories.id'=>1))),
然后Item结果我不想带回一个空的Categories数组,以区别于“好”的项目.但实际上我不希望所有项目结果都归还…
ETA(2):我可以通过在afterFind中取消设置结果来解决方法,如果Categories数组为空(感谢http://nuts-and-bolts-of-cakephp.com/2008/08/06/filtering-results-returned-by-containable-behavior/的提示),然后让我的随机查找功能在结果得到之前不放弃:
while (!is_array($item)) { $item = $this->random($cat); }
但是,这可能是笨重的吗?无论如何,时间让我停止编辑我的问题,然后离开并在它上面睡觉!
<?PHP $this->Item->bindModel(array('hasOne' => array('ItemsCategory'))); $random = $this->Item->find('all',array( 'order' => 'rand()','conditions' => array('ItemsCategory.category_id' => '1') )); ?>
以上是脚本宝典为你收集整理的cakephp – Cake HABTM查询,按Rand排序()全部内容,希望文章能够帮你解决cakephp – Cake HABTM查询,按Rand排序()所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。