2014-10-24 2 views
0

У меня есть приложение с таблицами carrentals, carrental_images и carrental_rates. Я пытаюсь сделать левое соединение, чтобы заполнить результат, который показывает изображение и цену. Однако я получаю компанию по прокату автомобилей, показывающую четыре раза. Он имеет 4 изображения, связанные с ним. Как я могу получить только одно изображение за аренду?Cakephp присоединяется к трем таблицам с дубликатами

$options = array(
       'joins' => array(
        array(
         'alias' => 'cm', 
         'table' => 'carrental_images',     
         'type' => 'LEFT', 
         'conditions' => array(
          'cm.carrental_id = Carrental.id = ' 
         ), 
        ), 

        array(
         'alias' => 'cr', 
         'table' => 'carrental_rates',     
         'type' => 'LEFT', 
         'conditions' => array(
          'cr.carrental_id = Carrental.id'        
         ), 

        ),     

       ), 
       'fields' => array(
        'cm.image', 
        'cr.dailyRate', 

        'Carrental.id', 
        'Carrental.name', 
        'Carrental.carrental_url',     
        'lower(CONCAT("mysitem/cake/carrentals/", Carrental.carrental_url)) AS urlLink',  
        'lower(CONCAT("mysite/cake/img/carrentals/thumbs/", cm.image)) AS imageLink'     
       ), 
       'recursive' => 0,    
       'conditions' => array('cm.image_order' => 0), 
       'limit' => 10 
      ); 
     $this->set('rentals', $this->Carrental->find('all', $options)); 
+0

Я нашел ответ здесь http://stackoverflow.com/questions/7976793/cakephp-returning-duplicate-records GROUP BY является решением – earnest

ответ

1

Нужно, чтобы группа ограничивалась одной строкой. Вы должны рассмотреть возможность маркировки фотографий в виде миниатюр отображения для списка, чтобы пользователь мог выбрать, какую фотографию они хотят отобразить для зрителя. Это устраняет необходимость в GROUP BY.

Смежные вопросы