我正在使用Cakephp 2.x ..我的数据库名称中有两个表图像和音频 ..两者都有用户ID 字段...首先我想要的是我想要检索数据并按两个表中的日期字段排序..在我的视图页面上我想通过以下方式显示图像和视频约会......
例如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',
另一件事我不知道如何以混合顺序显示图像和视频...我的意思是当我这样做时
foreach ($datas as $data){
echo $data['Image']['filename'];
echo $data['Audio']['filename'];
}
问题是我必须手动编写现在显示图像的代码,现在显示音频...我想显示关于日期的文件..所以如果有两个音频文件显示后的图像图像,然后等等
答案 0 :(得分:0)
如果我理解你的正确,我认为这种方法应该有效:
定义图像/音频与用户之间的正确关系(用户拥有多个音频/图像和音频/图像属于用户)
您可以定义相关图像/音频文件的排序方式(参见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‘]
}
?>
答案 1 :(得分: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;
对我来说,我需要在一张桌子而不是另一张桌子上的田地。在代码示例中,您可以看到images表具有不在音频中的“foo”,而在图像中没有“bar”。 (请注意数据类型转换。)我还使用一个字段来确定它是哪种类型的记录(参见上面的“类型”。)
然后创建模型
class Asset extends AppModel{
public $useTable = 'vw_combined_audio_images';
public $belongsTo = array('User' => array(####));
}
然后将模型添加到User模型的$ hasMany数组