2012-02-23 6 views
0

Я пытаюсь выбрать один элемент формы таблицы элементов и присоединиться ко второй таблице (изображения). Изображения в таблице будут иметь несколько результатов для каждого элемента. Проблема в том, что объединение результатов приводит к одному результату вместо массива со всеми данными изображений.Zend join left with multiple result from left table

Код

$select = $this->select(); 
    $select->setIntegrityCheck(false); 
    $select->from($this) 
      ->joinLeft('items_images', 'items.item_id = image_item_id') 
      ->where($where); 
    $result = $this->fetchRoll($select); 

Что мне не хватает?

Благодаря

+0

Что fetchRoll? Это похоже на fetchAll, но также может быть fetchRow .. :) – Liyali

+0

Результат будет всегда одним элементом, у этого массива будет другой вспомогательный массив с данными из каждого изображения, связанного с этим элементом (результат объединения). – Bema

ответ

0

в вашем посте вы имеете $result = $this->fetchRoll($select); я думаю, что его опечатка ошибка, которую вы могли бы делать $result = $this->fetchRow($select); в коде

но вы должны использовать fetchAll вместо:

$result = $this->fetchAll($select); 

см здесь http://framework.zend.com/manual/en/zend.db.table.html

EDIT: получить массив данных элемента с суб массив со всеми изображениями

$results = $this->fetchAll($select); 

$item['item_id'] = $result[0]['item_id']; 
//put other item's data here in item 
$images = array(); 
$i = 0; 
foreach($results as $result){ 
    $images[$i]['image_id'] = $result['image_id'] 
    $images[$i]['image_name'] = $result['image_name'] 
    //put other image's data here in $images[$i] 
    $i++; 
} 

$item['images'] = $images; 
+0

Спасибо за помощь MMC Использование $ this-> fetchAll ($ select) Я получаю массив с одним и тем же элементом, который повторяется много раз, поэтому, если этот элемент имеет четыре изображения, массив результатов будет в четыре раза больше этого элемента, каждый элемент с различные данные изображения. Я хочу, чтобы результат был массивом данных элемента с дополнительным массивом со всеми изображениями. Пытался использовать $ select-> group ('items.item_id'), но он отображает только одно изображение. – Bema

+0

Я добавил редактирование, чтобы получить массив данных элемента с дополнительным массивом изображений –

+0

Я вижу ваше решение MMC, я действительно думал, что могу привести результат, хорошо сформированный непосредственно из базы данных, вместо того, чтобы регулировать его с помощью цикла, но это отлично работает и не будет потреблять много обработки. Большое спасибо MMC !!! – Bema