0

私は包含可能な動作を使用していますが、中間モデルからのデータを停止することに疑いがあります。

私がこの構造を持っていると仮定します

Song -> Tracklist -> Album

そのため、Containable動作をSong Model設定すると、目的のフィールドでアルバム データがフェッチされます。ただし、すべての呼び出しで、中間モデル Tracklist のデータ全体も取得します。

私の収容可能な行動はこのようなものです。

$contain =  array('Tracklist'=>array('Album'=>array('id','name')));
$this-Song->find('first', array('contain'=>$contain));

このような。私のデータは

 [Tracklist] => Array
    (
        [0] => Array
            (
                [id] => 50
                [album_id] => 229
                [song_id] => 38
                [video_link] => 
                [status] => 0
                [featured] => 0
                [user_id] => 
                [created] => 
                [modified_by] => 
                [modified] => 
                [Album] => Array
                    (
                        [name] => Marasim
                        [slug] => marasim
                    )
            )

        [1] => Array
            (
                [id] => 2748
                [album_id] => 489
                [song_id] => 38
                [video_link] => 
                [status] => 1
                [featured] => 0
                [user_id] => 
                [created] => 2013-10-09 17:58:53
                [modified_by] => 
                [modified] => 2013-10-09 17:58:53
                [Album] => Array
                    (
                        [name] => Dummy Album
                        [slug] => dummy-album
                    )

                    )
            )
        [2] => Array
            (
                [id] => 2749
                [album_id] => 489
                [song_id] => 38
                [video_link] => 
                [status] => 1
                [featured] => 0
                [user_id] => 
                [created] => 2013-10-09 17:59:42
                [modified_by] => 
                [modified] => 2013-10-09 17:59:42
                [Album] => Array
                    (
                        [name] => Dummy Album
                        [slug] => dummy-album
                    )
            )
     )

中間モデルからのデータを制限したいだけです。それは可能ですか?

4

2 に答える 2

1

試す

  $contain =  array('Tracklist'=>array(
        'fields' = array('id'),
        'Album'=>array('id','name')
  ));
  $this-Song->find('first', array('contain'=>$contain));
于 2013-10-11T05:11:01.283 に答える
0
$data = $this-Song->find('first', array('contain'=>$contain));

// Extract the Album's of the playlist
$data = Hash::extract($data, '{n}.Tracklist.Album');

// debug($data)
[Album] => Array (
                    [name] => Marasim
                    [slug] => marasim
                 )
...

これがまさにあなたが望む出力ではない場合は、どのように出力したいかの例を挙げてください。回答を編集します。:)

于 2013-10-11T10:01:05.773 に答える