Как получить заполненные связанные модели в CakePHP при вызове read () - PullRequest
0 голосов
/ 31 марта 2012

У меня есть следующие модели:

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.');
}

Я заметил, что в Item->canView() $this->data['Site'] заполняются данные столбца из таблицы сайта. Но это просто массив, а не объект.

С другой стороны, $this->Site является объектом Site, но он не был заполнен данными столбца из таблицы сайта, такими как $this->data.

Как правильно CakePHP получить ассоциированную модель как объект (чтобы я мог вызывать методы для него) и содержащий данные? Или я все об этом говорю не так?

Спасибо!

1 Ответ

0 голосов
/ 31 марта 2012

"... и устанавливает текущие данные модели (Model :: $ data) с найденной записью." от http://api13.cakephp.org/class/model#method-Modelread

...