【发布时间】:2012-04-02 05:50:02
【问题描述】:
我有两个模型:
class Post extends AppModel {
var $name = 'Post';
var $belongsTo = array(
'User' => array(
'className' => 'User',
'foreignKey' => 'user_id'
)
);
}
和
class User extends AppModel {
var $name = 'User';
var $hasMany = 'Post';
}
现在我在PostsController 中的查询有问题。我有一个add() 函数和视图add.ctp,它基本上是一个表单。现在我想以这种形式显示一些用户信息。
class PostsController extends AppController {
var $name = 'Posts';
var $helper = array('Html', 'Form');
var $uses = array('User');
public function index() {
$this->set('posts', $this->Post->find('all'));
}
function add() {
$user_id = 1;
$this->set('user', $this->User->findById($user_id));
if ($this->request->is('post')) {
if ($this->Post->save($this->request->data)) {
$this->Session->setFlash('Your post has been saved.');
$this->redirect(array('action' => 'index'));
} else {
$this->Session->setFlash('Unable to add your post.');
}
}
}
}
但现在 add-view-page 显示实际上触发了两个查询。因此,如果我在添加视图中print_r($user),我将得到一个包含两个数组的数组。一个用于 user_id = 1 的帖子,一个用于 id = 1 的实际用户。但我只想获得用户 id = 1。
【问题讨论】:
-
您想从哪里获取 id 为 1 的用户?在
PostsController::add()? -
抱歉,
$user是从视图中,我是对的? -
是的,$user 来自视图,我希望在我的视图中有一个 id = 1 的用户数组。