0

我有以下型号:

class Site extends AppModel {
    public $name = "Site";
    public $useTable = "site";
    public $primaryKey = "id";
    public $displayField = 'name';

    public $hasMany = array('Item' => array('foreignKey' => 'siteId'));

    public function canView($userId, $isAdmin = false) {
        if($isAdmin) { return true; }
        return array_key_exists($this->id, $allowedSites)!==false;
    }
}

class Item extends AppModel {
    public $name = "Item";
    public $useTable = "item";
    public $primaryKey = "id";
    public $displayField = 'name';
    public $belongsTo = array('Site' => array('foreignKey' => 'siteId'));

     public function canView($userId, $isAdmin = false) {
        // My problem appears to be the next line:
        return $this->Site->canView($userId, $isAdmin);
    }

 }

在我的控制器中,我正在做这样的事情:

$result = $this->Item->read(null, $this->request->id);

// Verify permissions
if(!$this->Item->canView($this->Session->read('userId'), $this->Session->read('isAdmin'))) {
    $this->httpCodes(403);
    die('Permission denied.');
}

我注意到 inItem->canView() $this->data['Site']填充了站点表中的列数据。但它只是一个数组而不是一个对象。

另一方面$this->Site是一个 Site 对象,但它还没有填充站点表中的列数据,例如$this->data.

让 CakePHP 将关联模型作为对象(因此我可以在其上调用方法)并包含数据的正确方法是什么?还是我对这一切都错了?

谢谢!

4

1 回答 1

0

“...并使用找到的记录设置当前模型数据 (Model::$data)。” 来自http://api13.cakephp.org/class/model#method-Modelread

于 2012-03-31T09:14:59.323 回答