Как отобразить результаты из результирующего набора в CakePHP?

#cakephp #cakephp-1.3

#cakephp #cakephp-1.3

Вопрос:

У меня есть следующие коды, я добавил отладку, и это данные, которые я могу извлечь из базы данных. Я хочу отобразить ['User']['firstName'] а также ['Passion']['passion_tag'] на странице просмотра, как мне это сделать? Я сталкиваюсь с такой ошибкой, как:

Примечание (8): Неопределенный индекс: passion_tag [APP viewssearchessimple_search.ctp, строка 127]

 [5] => Array
        (
            [User] => Array
                (
                    [id] => 41
                    [password] => 2b4a3cf55ddf9b15e161aeba3540a75ddd6ea872
                    [firstName] => Ming Xin
                    [lastName] => Toh
                    [email] => mingxin@xconnect.com
                    [locale] => eng
                    [displayName] => 
                    [timezone] => 0
                    [gender] => f
                    [dob] => 1989-08-25
                    [aboutme] => 
                    [country_home] => 
                    [country_current] => Singapore
                    [city_current] => 
                    [currentLogin] => 
                    [lastLogin] => 
                    [registeredDate] => 
                    [profileImgBig] => 
                    [image_id] => 
                    [authProvider] => 
                    [token] => 
                    [authId] => 
                )

            [Image] => Array
                (
                    [id] => 
                    [name] => 
                    [img_file] => 
                )

            [Passion] => Array
                (
                    [0] => Array
                        (
                            [id] => 46
                            [tag] => acting
                            [dateCreated] => 
                            [userDefined] => 1
                            [PassionsUser] => Array
                                (
                                    [id] => 64
                                    [user_id] => 41
                                    [passion_tag] => acting
                                    [description] => Dont be shy
                                    [datejoined] => 2011-09-07 07:06:54
                                    [type] => professional
                                    [passionImg] => UserPassion/Acting.jpg
                                )

                        )

                    [1] => Array
                        (
                            [id] => 44
                            [tag] => cake baking
                            [dateCreated] => 
                            [userDefined] => 1
                            [PassionsUser] => Array
                                (
                                    [id] => 62
                                    [user_id] => 41
                                    [passion_tag] => cake baking
                                    [description] => Bakey Bakey
                                    [datejoined] => 2011-09-07 09:04:10
                                    [type] => professional
                                    [passionImg] => UserPassion/Cake Baking.jpg
                                )

                        )

                    [2] => Array
                        (
                            [id] => 42
                            [tag] => hip hop dancing
                            [dateCreated] => 
                            [userDefined] => 1
                            [PassionsUser] => Array
                                (
                                    [id] => 60
                                    [user_id] => 41
                                    [passion_tag] => hip hop dancing
                                    [description] => Hopping is Good
                                    [datejoined] => 2011-08-23 12:41:55
                                    [type] => personal
                                    [passionImg] => UserPassion/Hiphop-Dance.jpg
                                )

                        )

                    [3] => Array
                        (
                            [id] => 45
                            [tag] => sky diving
                            [dateCreated] => 
                            [userDefined] => 1
                            [PassionsUser] => Array
                                (
                                    [id] => 63
                                    [user_id] => 41
                                    [passion_tag] => sky diving
                                    [description] => Dont splat the Earth
                                    [datejoined] => 2011-09-07 06:59:43
                                    [type] => personal
                                    [passionImg] => UserPassion/Sky Diving.jpg
                                )

                        )

                    [4] => Array
                        (
                            [id] => 47
                            [tag] => tamil movies
                            [dateCreated] => 
                            [userDefined] => 1
                            [PassionsUser] => Array
                                (
                                    [id] => 65
                                    [user_id] => 41
                                    [passion_tag] => tamil movies
                                    [description] => Really interesting
                                    [datejoined] => 2011-08-18 16:17:00
                                    [type] => personal
                                    [passionImg] => UserPassion/Tamil Movies.jpg
                                )

                        )

                    [5] => Array
                        (
                            [id] => 43
                            [tag] => teaching
                            [dateCreated] => 
                            [userDefined] => 1
                            [PassionsUser] => Array
                                (
                                    [id] => 61
                                    [user_id] => 41
                                    [passion_tag] => teaching
                                    [description] => Nothing beats this experience
                                    [datejoined] => 2011-09-09 07:52:12
                                    [type] => professional
                                    [passionImg] => UserPassion/Teaching.jpg
                                )

                        )

                )

        )
  

Ответ №1:

Похоже, что это часть большего набора результатов, полученного с помощью $this->Model->find( 'all' ) , поэтому я предполагаю, что вы хотите отобразить все имена из этих результатов. Вы должны просмотреть все результаты, чтобы получить отдельные имена. Кроме того, у каждого пользователя есть несколько Увлечений, поэтому вам снова придется перебирать их, если вы хотите отобразить их все.

 echo 'Our users and their passions are: <ul>';

foreach( $this->data as $user ) {
    echo '<li>';
    echo $user[ 'User' ][ 'firstName' ];
    echo ' who is passionate about: ';
    foreach( $user[ 'Passion' ] as $passion ) {
        echo $passion'PassionsUser' ][ 'passion_tag' ];
        echo ' ';
    }
    echo '</li>';
}

echo '</ul>';
  

Комментарии:

1. ваши коды работают, я уже объявил $user как —> foreach ($ search_fields как $user) { } Как включить ваш другой цикл foreach

2. ваши коды также дублируют имя пользователя для каждой страсти, которая у него есть.

3. Вы должны использовать $this->Model->find( 'first' ) , чтобы получить только одну запись, а не все. Имя пользователя не должно дублироваться ни в одном случае.

Ответ №2:

У Passion нет passion_tag ключа, passion_tag находится в PassionsUser .

If $data — это место, где хранятся все данные,

 echo $data['User']['Passion'][0]['PassionsUser']['passion_tag'];//echo first result
  

Если вы хотите перечислить все, вам придется выполнить итерацию по PassionUser массиву.