CakePHP-2.0如何从$ allposts = $ this-> paginate('Post')获取用户名; user_id是posts表的外键?

时间:2012-03-26 12:27:02

标签: cakephp join inner-join cakephp-2.0 foreign-key-relationship

我正在使用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 个答案:

答案 0 :(得分:1)

默认情况下,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'];

答案 1 :(得分:0)

尝试将递归属性设置为2:

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

$allposts应该包含每个帖子及其所属用户。

另请参阅:Cakephp pagination on recursive conditions