我正在使用Cakephp 2.x ..我有两个表进入我的数据库名称 Images 和 Audios ..都有一个 userid 字段...首先我想要的是我想要检索数据并按 date 字段排序在两个表格中...在我的视图页面上,我想按日期显示图像和视频...
例如image1,video2,video3,image2
现在我在Images模型中这样做
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'];
}
问题是我必须手动编写现在显示图像的代码,现在显示音频...我想显示相关日期的文件..所以如果有两个音频文件后显示图像然后图像然后等等
2 回答
我有同样的情况 . {虽然收效甚微,但我尝试使用CakePHP的Hash类合并两个模型的数组,以便将模型组合成一个记录集 . 也许另一个人可以使用CakePHP来解释如何做到这一点 . }
对我有用的是通过视图整合MySQL数据库中的两个模型(表) . 继续使用现有模型进行图像和音频CrUD操作 . 对于此页面,请使用基于视图的新模型 . 这是示例视图代码:
对我来说,我需要在一张 table 而不是另一张 table 上的田地 . 在代码示例中,您可以看到images表中的“foo”不在音频中,音频中的“bar”不在图像中 . (请注意数据类型转换 . )我还使用了一个字段来确定它是哪种类型的记录(参见上面的“类型”) .
然后创建模型
然后将模型添加到User模型的$ hasMany数组中
如果我理解你的正确,我认为这种方法应该有效:
定义图像/音频和用户之间的正确关系(用户有多个音频/图像和音频/图像属于用户)
您可以定义如何订购相关的图像/音频文件(请参阅CakePHP文档:http://book.cakephp.org/2.0/en/models/associations-linking-models-together.html#hasmany)
现在,在您的控制器中,只需为您的视图设置用户,您就可以使用它来检索数据