2010-09-19 5 views
1

Это, наверное, немой вопрос, но я не могу найти окончательного ответа нигде. Можно ли получить доступ к данным модели в контроллере, и если да, то как?Можете ли вы получить данные модели в контроллере в CakePHP?

Я попытался следующие:

$this->set('mydata', $this->Model->find('all', 'conditions' => array('id' => 'someID'))); 

И к нему доступ через это в контроллере:

$mydata['Model']['field'] 

Но это, кажется, только для представлений.

Есть ли способ получить доступ к данным модели в контроллере? Причина в том, что мне нужно выполнить вычисления на связанной модели (принадлежит), которая не может быть выполнена с помощью скрытых полей или чего-либо, потому что идентификатор связанной модели не передается до тех пор, пока форма не будет отправлена.

Любая помощь была бы принята с благодарностью!

ответ

1

Хм, как насчет:

$myData = $this->Model->find('all', 'conditions' => /* ... */); 

$myData['Model']['field']; 
$myData['RelatedModel']['field']; 

$this->set('mydata', $myData); 

достаточно :) Простой

Model :: найти() возвращает данные, вам не нужно передавать ее непосредственно в контроллер набора ::() , вы можете сначала с ним связаться, а затем передать его своим представлениям.

Но, я бы посоветовал это сделать, лучше, если у вас есть модель :: messWithData ($ data), и пусть модели имеют дело с данными и позволяют контроллерам позаботиться о логике приложения. Помните, толстые модели, тощие контроллеры!

+1

Спасибо за ответ! То, что я пытаюсь сделать, это выполнить вычисление, которое использует бит данных из представления формы и смешивает его с данными из связанной модели ownTo. Вы говорите, что у меня должна быть функция в связанной модели, которая выполняет вычисления, а затем просто вызывает ее в контроллере? – Justin

+1

Зависит от того, что вы пытаетесь сделать, но мой ответ по существу «да». :) Лучше хранить данные, изменяющие данные, в ваших моделях (это их цель!), Если только это не будет отображаться в представлении (т. Е. Если это только проблема форматирования - в этом случае я 'd используйте специальный помощник, который подготовит данные для отображения). –

+0

Спасибо. Я начал реализовывать это по всему проекту, и это определенно делает код более читаемым, чтобы иметь все запросы БД в моделях! – Justin

Смежные вопросы