2013-07-24 43 views
1

我是一个CakePHP的2.x的工作中检索数据。我有两个表到我的数据库名图片音像 ..都有一个用户ID场...第一我想是我想日期场这是我的两个视图页面上,我想按日期显示的图像和视频中的表...以检索数据和排序...CakePHP的加盟:从两个表

例如图像1, 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

不应该排序 - ''order'=> array('Image.date')'? – Ahmad

回答

0

我有同样的情况。 {我几乎没有成功,我尝试使用CakePHP的Hash类来合并两个模型的数组,以便将这些模型合并成一个记录集。也许另一个人可以用CakePHP来解释和解释如何做到这一点。}

对我而言,我的工作就是通过视图整合我的MySQL数据库中的两个模型(表)。继续使用您的现有模型进行图像和音频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”,它不在音频中,音频在图像中没有“bar”。 (只是要小心数据类型转换的。)我也使用的字段来确定这是哪种类型的记录(见“类型”上面。)

然后创建模型

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

然后添加模型添加到用户模型的$ hasMany数组中