CakePHP-2.0 Как я могу получить имя пользователя из $ allposts = $ this-> paginate ('Post'); где user_id - внешний ключ таблицы сообщений? - PullRequest
0 голосов
/ 26 марта 2012

Я использую плагин CakeDC-Users.

<?php
class Post extends AppModel { 
    public $useTable='posts';
    public $belongsTo = array('User');
    public $hasMany=array('Comment');
}

Мне пришлось использовать paginate:

$allposts=$this->paginate('Post');

Я могу получить user_id таким образом:

foreach ($allposts as $post) {
    debug($post['Post']['user_id']);

Но мне нужно имя пользователя, а не user_id.Как я могу получить имя пользователя?

Ответы [ 2 ]

1 голос
/ 26 марта 2012

Функция содержания CakPHP по умолчанию скрывает все связанные модели по умолчанию: http://book.cakephp.org/2.0/en/core-libraries/behaviors/containable.html

Если вы хотите добавить только одно поле связанной Модели, вы можете использовать этот синтаксис:

$allposts = $this->Post->find('all', array('contain' => 'User.username'));

или с paginate используйте это в вашем классе контроллера: (http://book.cakephp.org/1.3/en/view/1232/Controller-Setup)

var $paginate = array('contain' => 'User.username');

Попробуйте выполнить следующее:

$post['User']['username'];
0 голосов
/ 26 марта 2012

Попробуйте установить рекурсивное свойство равным 2:

$this->Post->recursive = 2;
$allposts = $this->paginate('Post');
debug($allposts);

$allposts должно содержать каждое сообщение и принадлежащего ему пользователя.

См. Также: Разбиение по Cakephp в рекурсивных условиях

...