Cakephp联接:从两个表中检索数据


Cakephp join: retrieving data from two tables

我正在开发Cakephp 2.x.。我的数据库名称中有两个表ImagesAudios。。两者都有一个userid字段。。。首先,我想检索数据,并按两个表中的date字段排序。。在我的视图页面上,我想按日期显示图像和视频。。。

例如图像1、视频2、视频3、图像2

现在我在图像模型中做这件事

   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'];
      }

问题是我必须手动编写代码,现在显示图像,现在显示音频。。。我想展示一下关于日期的文件。。因此,如果在两个音频文件之后有一个图像显示一个图像,那么上也是如此

如果我理解你的正确性,我认为这种方法应该有效:

定义图像/音频和用户之间的正确关系(用户有许多音频/图像和音频/图像属于用户)

您可以定义相关图像/音频文件的排序方式(请参阅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‘]
}
?>

我也有同样的情况。{我尝试使用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数组