3

在 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()它只带来数据 wrt $id(主键)。

我的问题:

  1. 有什么方法可以调整条件超过的读取功能$id?因为如果它有效,它只需要在我的所有控制器中添加一行?
  2. 或者我必须使用 find() 函数的长代码来获取是唯一的选择?

任何最佳解决方案都将是可观的。

4

2 回答 2

3

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

只需将该方法复制Model::read()到您的AppModel班级并进行必要的更改。

于 2011-09-22T12:37:53.223 回答
0

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

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

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

于 2011-09-22T12:34:20.073 回答