cakephp – Cake HABTM查询,按Rand排序()

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了cakephp – Cake HABTM查询,按Rand排序()脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
知道Cake HABTM协会在最好的时候都很棘手,但我似乎让自己的生活变得更加艰难……

如果我想从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,请注明来意。