read()函数CakePHP中的条件

时间:2011-09-22 12:24:11

标签: php cakephp cakephp-appmodel

在CakePHP函数edit中,我使用read()函数:

$this->data = $this->Article->read(null, $id);

它带来$id的所有字段。现在,我正在尝试调整以在read()中再提供一个条件,以便仅在用户登录时才能获取文章。

例如:

 $this->Article->user_id = $user_id;
 $this->Article->id = $id;
 $this->Article->read();

显然它需要工作,因为read()只会带来数据w.r.t. $id(主键)。

我的问题:

  1. 有没有办法调整条件超过$id的读取功能?因为它只需要在我的所有控制器中添加一行吗?
  2. 或者我必须使用find()函数的长代码来获取是唯一的选择吗?
  3. 任何最佳解决方案都会令人感激。

2 个答案:

答案 0 :(得分:3)

如果你真的必须这样做,你可以使用OOP技术来覆盖核心方法的工作方式。

只需将Model::read()方法复制到AppModel课程,然后进行必要的更改。

答案 1 :(得分:0)

如果您想有条件地进行搜索,则必须使用find()。另一种选择是仅在条件成立时才读取数据:

$this->Article->id = $id;
if( $this->Article->field( 'user_id' ) == $user_id ) {
    $this->Article->read();
}

read()自动填充$this->data。)