这就是问题所在。我有一个表'商店'表格'产品',所以每个商店(例如沃尔玛)都有一系列产品:(咖啡,牛奶,番茄酱等)我需要做一个只检索2个随机商店的发现,条件是商店必须至少有一个产品。
我正在做这样的发现:
$this->Store->find('all', array( 'conditions' => ...... , 'order' => 'rand()','limit' => 2));
但是此查找可以检索没有产品的商店。
我无法在表产品中进行查找,因为多个产品具有相同的商店,而随机商品可能会导致同一商店两次。
答案 0 :(得分:0)
按照您提到的那样在“产品”表格中执行查找,然后过滤以仅获取 DISTINCT store_id 。这将过滤两次获得同一商店。类似于:
$this->Store->Product->find('all', array(
'order' => 'rand()',
'limit' => 2,
'fields' => array('DISTINCT(Store.id)')
));
或者只是分组 Store.id
:
$this->Store->Product->find('all', array(
'order' => 'rand()',
'limit' => 2,
'group' => 'Store.id'
));