1

私はCakephp 2.xに取り組んでいます..私は自分のデータベース名ImagesAudiosに2つのテーブルを持っています..どちらもユーザーIDフィールドを持っています...最初に私が欲しいのは、データを取得して日付フィールドでソートしたいということです両方のテーブルで..ビューページで、日付ごとに画像とビデオを表示したい...

たとえば、画像 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',

もう 1 つは、画像とビデオを順番に並べて表示する方法がわかりません。

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

      }

問題は、画像を表示してオーディオを表示するコードを手動で作成する必要があることです...日付に関してファイルを表示したい..2つのオーディオファイルの後に画像がある場合は、画像を表示してからすぐ

4

2 に答える 2

0

私も同じ状況でした。{ほとんど成功しなかったので、CakePHP の Hash クラスを使用して 2 つのモデルの配列をマージし、モデルを 1 つのレコードセットに結合しようとしました。他の人が参加して、CakePHP だけでこれを行う方法を説明してくれるかもしれません。}

私にとってうまくいったのは、ビューを介して MySQL データベース内の 2 つのモデル (テーブル) を統合することでした。画像と音声の 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(####));
}

次に、モデルを User モデルの $hasMany 配列に追加します

于 2013-07-26T11:08:40.187 に答える