CakePHP:检索控制器中的特定表字段

时间:2011-07-29 02:21:54

标签: cakephp

我是Cake的新手,并试图找到最佳解决方案来检索属于$ id的特定字段:

这是我的Post控制器中的视图功能

function view($id = null) {
    if (!$id) {
        $this->Session->setFlash(__('Invalid post', true));
        $this->redirect(array('action' => 'index'));
    }
    $this->set('post', $this->Post->read(null, $id));
}

在post表中,有一个user_id外键。我需要检索属于此Post $ id的特定字段。

我将函数读作find('All),read()或者只是在视图中删除非常规会话:

$session->write('example') = $post['Post']['user_id];

执行此操作的最佳方法是什么,我的首选是检索控制器中的字段。谢谢!

4 个答案:

答案 0 :(得分:19)

CakePHP有一个字段功能,应该可以做到这一点。

$this->Post->id = $id;
$user_id = $this->Post->field('user_id');

有关使用字段的详细信息,请参阅:http://book.cakephp.org/2.0/en/models/retrieving-your-data.html#model-field

第二个选项是使用查找功能,如果不需要整个Post对象,只返回几个字段。下面还显示了使用条件而不是设置当前Post。

$this->Post->find('first', array(
  'conditions'=>array('id'=>$id),
  'fields'=>array('user_id')
));

有关查找的更多信息,请访问:http://book.cakephp.org/2.0/en/models/retrieving-your-data.html

答案 1 :(得分:1)

$this->Post->id = $id;
$this->Session->write('example',$this->Post->field('user_id'));

答案 2 :(得分:0)

Try this one, since I don't know which field(s) you need I provide an example field array set using Magic Find Types:

$fields = ['title', 'body', 'created'];
$record = $this->Post->findById($id, $fields);

or multiple records

$recordSet = $this->Post->findAllByTitle('The title', $fields);

*Note the the second example doesn't make a lot of sense unless there are multiple titles with the name 'The title' in the the posts.title column.

答案 3 :(得分:0)

在CakePHP 3中,您可以使用$this->Model->get()获取实体,然后直接引用必填字段。

$fieldValue = $this->ModelName->get($id)->fieldName;