CakePHP用户查找基于他们的ID

时间:2012-06-12 09:37:49

标签: arrays cakephp cakephp-2.0 cakephp-appmodel

我认为这是一个相对常见的事情,但我无法在任何地方找到示例,而且关于find()的Cookbook部分在这个主题上没有明确的说明。也许这只是一件非常简单的事情,蛋糕假设你可以自己做。

我想在这里做的就是在Cake中检索用户的名字(不是当前登录的用户......不同的用户名),因为他们的ID是通过视图中的数组传递给我的。

这是我在控制器中得到的东西:

public function user_lookup($userID){
  $this->User->flatten = false;
  $this->User->recursive = 1;
  $user = $this->User->find('first', array('conditions' => $userID));
  //what now?
}

此时,我甚至不知道我是否在正确的轨道上...我认为这将返回一个包含用户数据的数组,但我该如何处理这些结果呢?我怎么知道阵列会是什么样子?我只是return($cakeArray['first'].' '.$cakeArray['last'])吗?我不知道......

帮助?

1 个答案:

答案 0 :(得分:2)

您需要使用set获取返回的数据,并将其作为视图中的变量进行访问。 set是您将数据从控制器发送到视图的主要方式。

public function user_lookup($userID){
  $this->User->flatten = false;
  $this->User->recursive = 1;

  // added - minor improvement
  if(!$this->User->exists($userID)) {
      $this->redirect(array('action'=>'some_place')); 
      // the requested user doesn't exist; redirect or throw a 404 etc.
  }

  // we use $this->set() to store the data returned. 
  // It will be accessible in your view in a variable called `user` 
  // (or what ever you pass as the first parameter)
  $this->set('user', $this->User->find('first', array('conditions' => $userID)));

}


// user_lookup.ctp - output the `user`
<?php echo $user['User']['username']; // eg ?>
<?php debug($user); // see what's acutally been returned ?>

更多manual(这是基本的蛋糕,所以可能值得读好)