从CakePHP中获取模型数据的最有效方法是什么?

时间:2010-02-18 21:43:54

标签: php cakephp cakephp-appmodel

我是CakePHP的新手,还在搞清楚基础知识。现在我对从模型中获取一个或多个字段的过程(从另一个链接模型中)感到有点迷惑。

到目前为止,我有这个:

$this->user->id = 123;
$this->User->read();
$field1 = $this->User->data['User']['field1'];
$field2 = $this->User->data['User']['field2'];

这看起来非常冗长。

而且:

$this->user->id = 123;
$field1 = $this->User->field('field1');
$field1 = $this->User->field('field2');

这似乎不太长,但导致两个查询。

使用在这些情况下做的事情,前蛋糕:

$this->User = new User(123);
$field1 = $this->User->field1;
$field2 = $this->User->field2;

或者当我想打字时:

this->User = new User(123);
$field1 = $this->User->getFieldOne();
$field2 = $this->User->getFieldTwo();

所以,问题是:我是否在CakePHP中错过了完成此任务的一些魔法,或者我是否需要经常打字?

3 个答案:

答案 0 :(得分:4)

你永远不会相信,但有一个简短的方法: - )

$this->User->find('all', array('fields'=>array('field1', 'field2')));

答案 1 :(得分:2)

$arrayOfFiels = array('field1', 'field2');
$this->User->id = 123;
$userFields = $this->User->read($arrayOfFields);

或类似的东西:

$userFields = $this->User->read(null, 123);

在这两种情况下,$ userFields都是一个包含User #123数据的数组。在第二个中,由于第一个参数设置为null,因此将获取所有字段。第二个参数(可选)设置一个id,也可以像第一个例子中那样预先设置。

答案 2 :(得分:0)

您可以使用“读取”或“查找”或“查询”从模型中获取数据

$fields = array('field1','field2');
$this->data = $this->User->read( $fields,$someid );

查找

$this->data = $this->User->find('all',array('fields'=>array('field1','field2') );

查询

$this->data = $this->User->query("select field1,field2 from user where id=$someid;");