Нет ли способа доступа к экземпляру модели как объекта (в отличие от массива) в методе модели в CakePHP? В супер-упрощенный пример, мой инстинкт подсказывает мне, что это должно быть возможно сделать что-то вроде этого:Вызов метода модели с контроллера в CakePHP
Bird.php
...
public function specialName()
{
$name = $this->name;
return "Oh wow! It's ".$name;
}
Если я называю этот метод из моего BirdController.php так:
public function view($id) {
if (!$id) {
throw new NotFoundException(__('Invalid bird'));
}
$this->Bird->id = $id;
$this->set('results', $this->Bird->specialName());
}
. Затем он отображает в файле вида «О, вау! Это птица», а не «О, вау! Это Фредди» (то есть имя модели, а не имя экземпляра модели).
Я пробовал варианты этого общего подхода, но безрезультатно. Кажется, я должен получить доступ к информации с помощью массива, например, так:
Bird.php
...
public function specialName($id)
{
$data = $this->findById($id);
$name = $data['Bird']['name'];
return "Oh wow! It's ".$name;
}
Это кажется WAY слишком сложным для меня. Что мне не хватает? В конечном итоге я хочу иметь доступ к зависимым моделям в моей модели, например. получить все связанные с ним Bird-> Подвиды. Похоже, что было бы намного проще работать с объектами.
Hi burzum. Спасибо, что нашли время для решения моего вопроса. Да, я потратил немало времени на чтение документации, и я сделал учебник для блога. Я понимаю, как создавать связанные модели; мой вопрос заключался в том, как лучше всего получить доступ к данным. Основываясь на моем опыте работы с другой инфраструктурой PHP, я ожидал, что результаты вернутся как объекты данных, но вы подтвердили, что это невозможно в текущей версии Cake без использования плагина. – codebird