1

Containable 配列に関するCakeBookのガイドを読みました。

class Post extends AppModel {
    public $actsAs = array('Containable');

結果は次のとおりです。

array(
    (int) 0 => array(
        'Post' => array(
            'id' => '1',
            'title' => 'This is the first post',
            'slug' => 'this-is-the-first-post',
            'body' => 'body body 111body body 111body body 111body body 111body body 111body body 111body body 111',
            'image_id' => '0',
            'language' => 'sv',
            'translation_id' => '0',
            'created' => '2012-09-03 17:45:57',
            'modified' => '2012-09-03 19:12:21'
        ),
        'Image' => array(
            'id' => null,
            'name' => null,
            'url' => null,
            'alt' => null,
            'description' => null
        ),
        'Asset' => array(),
        'Readmore' => array(),
        'Reference' => array(),
        'Category' => array(),
        'Course' => array(),
        'Tag' => array(),
        'User' => array(
            (int) 0 => array(
                'password' => '*****',
                'id' => '2',
                'username' => 'test0',
                'fullname' => 'Test Test',
                'url' => '',
                'email' => '',
                'role' => 'admin',
                'phone' => '+',
                'created' => '2012-09-03 17:44:22',
                'PostsUser' => array(
                    'id' => '1',
                    'post_id' => '1',
                    'user_id' => '2'
                )
            ),
            (int) 1 => array(
                'password' => '*****',
                'id' => '1',
                'username' => 'test1',
                'fullname' => 'Frank',
                'url' => '',
                'email' => '',
                'role' => 'admin',
                'phone' => '',
                'created' => '2012-09-03 17:41:25',
                'PostsUser' => array(
                    'id' => '3',
                    'post_id' => '1',
                    'user_id' => '1'
                )
            )
        )
    ),

ただし、配列の特定の部分を出力することはできません。したがって、Post のインデックス ビューにいる場合は、次のように記述します。

echo h($post['Post']['title']);

すべて問題ありませんが、試してみると:

echo h($post['User']['fullname']); 

うまくいきません。post と user の間に hasmany と belgosto の関係がある場合は、Users をループ処理する必要があるという点がわかりました。

では、投稿に関連付けられているすべてのユーザーを印刷するにはどうすればよいでしょうか?

4

2 に答える 2

2

スタック オーバーフローへようこそ!

$post['User']はユーザーの配列であるため、各ユーザーにはインデックスがあります。たとえば、test0´sフルネームを取得するには、次の手順を実行する必要があります。

echo h($post['User'][0]['fullname']);

すべてのユーザーのフルネームを表示するには、次を試してください。

<?php
foreach($post['User'] as $user) { 
    echo h($user['fullname']);
});
于 2012-09-11T18:08:30.123 に答える
1

ありがとう!私はそれに対する解決策を見つけました。少し不注意だったので、以前に手動で解決する方法を試し、PostUser モデルとそのモデルのコントローラーを追加しました。それらを削除すると、すべて正常に動作します。ケーキマジックがまた効く。

于 2012-09-12T07:36:57.973 に答える