2013-07-24 4 views
1

Я работаю на 2ой CakePHP .. У меня есть две таблиц в мое имя БД Изображений и Audios .. оба имеют Идентификатор_пользователь поля ... первые что я хочу, я хочу получить данные и сортировать по Поле, которое находится в обеих таблицах .. на моей странице просмотра Я хочу показать изображения и видео по дате ...CakePHP присоединиться: получение данных из двух таблиц

например image1, video2, video3, image2

прямо сейчас я делаю это в Модели изображений

function getImagesAndAudio($userid){ 
     $this->bindModel(array(
     'belongsTo' => array(
      'Audio' => array(
       'className' => 'Audio', 
       'foreignKey' => false, 
       'conditions' => array(

        'Image.user_id = Audio.user_id', 




       ), 
       'type' => 'LEFT', 

       'order'=>'Image.date',//error 


      ) 
     ) 
    ), false); 

    return $this->find('all', array('conditions' => array('Image.User_id' => $userid), 
     'contain' => array('Audio'), 
     )); 

проблема сейчас он дает мне ошибку, если я это сделать

 'order'=>'date', 

и другая вещь, я не знаю, как я могу показать изображения и видео в Mixup порядке ... я имею в виду когда я делаю это

foreach ($datas as $data){ 
    echo $data['Image']['filename']; 
    echo $data['Audio']['filename']; 

     } 

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

+0

Не следует заказывать - '' заказать '=> массив (' Image.date ') '? – Ahmad

ответ

0

Если я вас понимаю исправить я думаю, что этот подход должен работать:

Определить правильные отношения между Image/Аудио и пользователя (User hasMany аудио/изображения и аудио/изображения belongsTo пользователя)

вы можете определить, как соответствующие изображения/аудио файлы должны быть упорядочены (см CakePHP документации: http://book.cakephp.org/2.0/en/models/associations-linking-models-together.html#hasmany)

Теперь в контроллере просто установить пользователь для вашего зрения, и вы можете получить данные с

<?php 
//Same goes for Image 
foreach($userVariable[‘Audio‘] as $audio) { 
    echo $audio['filename‘] 
} 
?> 
0

У меня была такая же ситуация. {С небольшим успехом я попытался использовать класс Hash CakePHP для объединения массивов двух моделей, чтобы объединить модели в один набор записей. Может быть, другой человек может перезвонить и объяснить, как это сделать с помощью только CakePHP.}

Что сработало для меня, заключалось в том, чтобы объединить две модели (таблицы) в моей базе данных MySQL через представление. Продолжайте использовать существующие модели для операций Image и Audio CrUD. Для этой страницы используйте новую модель, основанную на представлении. Вот пример кода вида:

CREATE VIEW vw_combined_audio_images AS 
SELECT user_id, created, modified, foo, null as bar, 'image' as type 
FROM images 
UNION 
SELECT user_id, created, modified, null, bar, 'audio' 
FROM audio; 

Для меня мне нужны были поля, которые были в одном столе, а не в другом. В примере кода вы можете видеть, что таблица изображений имеет «foo», которая не находится в аудио и аудио, а «нет» на изображениях. (Только будьте осторожны отливкой типа данных.) Я также использовал поле, чтобы определить, какой тип записи он был (см «типа» выше.)

Затем создать модель

class Asset extends AppModel{ 
public $useTable = 'vw_combined_audio_images'; 
public $belongsTo = array('User' => array(####)); 
} 

Затем добавить модель к массиву $ hasMany модели пользователя

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

  • Нет связанных вопросов^_^