好吧,这就是问题所在。我有一个表“ Store”,该表连接到表“ Product”,因此每个商店(例如沃尔玛)都有一系列产品:(咖啡,牛奶,番茄酱等),我需要做一个发现仅检索2个随机商店,条件是这些商店必须至少具有一种产品。
我正在这样查找:
$this->Store->find('all', array( 'conditions' => ...... , 'order' => 'rand()','limit' => 2));
但是此发现可以检索没有产品的商店。
我无法在表Product中进行查找,因为多个产品具有相同的商店,而随机数可能导致同一商店两次。
像您提到的那样在Products表中进行查找,然后进行筛选以仅获取DISTINCT store_id。这将过滤掉两次获得相同商店的情况。类似于:
$this->Store->Product->find('all', array(
'order' => 'rand()',
'limit' => 2,
'fields' => array('DISTINCT(Store.id)')
));
或者只是Group By Store.id
:
$this->Store->Product->find('all', array(
'order' => 'rand()',
'limit' => 2,
'group' => 'Store.id'
));
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句