Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
sinoptik
цитировать
Зарегистрирован: 20 Авг 2009 16:29:34 Сообщения: 10
|
Добавлено: 20 Авг 2009 16:37:03 Заголовок сообщения: В одном контроллере загружать данные из многих таблиц |
|
|
То ли я не разобрался с самой струткурой MVC то ли с принцыпами кайка.
У меня при регистрации пользватель (модель Users)должен выбрать где он живет, у меня есть три таблицы: странны, регионы, города.
Как мне загрузить данные из этих таблиц не связывая их с таблицой user, куда удобнее поместить код выборки из этих таблиц. |
|
Вернуться к началу |
|
|
michas
цитировать
Зарегистрирован: 28 Янв 2008 11:28:31 Сообщения: 123
|
Добавлено: 20 Авг 2009 19:25:05 Заголовок сообщения: |
|
|
почитайте про ClassRegistry или requestAction _________________ Все самое интересное в реальном времени - xmpp:cakephp@conference.jabber.ru |
|
Вернуться к началу |
|
|
mayar
цитировать
Зарегистрирован: 03 Апр 2009 15:52:14 Сообщения: 24
|
Добавлено: 21 Авг 2009 11:07:01 Заголовок сообщения: |
|
|
sinoptik, как связаны твои 4 таблицы друг с другом?
Наверное вот так:
Страна hasMany Регион
Регион hasMany Город
User hasOne Город
И где ты хочешь использовать эту информацию?
Наверное при просмотре профиля пользователя или чего-то типа этого... Тогда в контроллере users_controller
function view() {
...
// Вся инфа по юзеру
$data = $this->User->find('all', array(
'recursive' = 2
))
...
}
Вот как-то так наверное |
|
Вернуться к началу |
|
|
Гость
цитировать
|
Добавлено: 21 Авг 2009 14:37:37 Заголовок сообщения: |
|
|
Мне страны, регионы и города, нужны во многих местах системы, не только для юзера. И мне не очень хочеться к моделию User ассоциировать дополнительные таблицы, хочу вынести это как-то отдельно но пока еще не решил как это сделаю. |
|
Вернуться к началу |
|
|
sinoptik
цитировать
Зарегистрирован: 20 Авг 2009 16:29:34 Сообщения: 10
|
Добавлено: 21 Авг 2009 14:38:04 Заголовок сообщения: |
|
|
Мне страны, регионы и города, нужны во многих местах системы, не только для юзера. И мне не очень хочеться к моделию User ассоциировать дополнительные таблицы, хочу вынести это как-то отдельно но пока еще не решил как это сделаю. |
|
Вернуться к началу |
|
|
mayar
цитировать
Зарегистрирован: 03 Апр 2009 15:52:14 Сообщения: 24
|
Добавлено: 21 Авг 2009 15:46:17 Заголовок сообщения: |
|
|
Что-то я тогда задачу не понял... Объясните смысл. |
|
Вернуться к началу |
|
|
Ivanhoe
цитировать
Зарегистрирован: 02 Сен 2009 12:32:00 Сообщения: 1
|
Добавлено: 02 Сен 2009 12:47:52 Заголовок сообщения: |
|
|
В контроллере можно использовать несколько моделей и не обязательно, чтобы эти модели были связаны между собой.
Достаточно указать контроллеру, с какими моделями (таблицами) он будет работать.
Делается это через свойство $uses.
Например так:
Код: | class UsersController extends AppControler
{
var $uses = array('User','Country', 'Region', 'City');
public function someAction()
{
$this->set('users',$this->User->find());
$this->set('countries',$this->Country->find());
. . . . . . . . . . . . . . . . .
$this->set('towns',$this->City->find());
// либо использовать как-то еще, по своему усмотрению
}
} |
|
|
Вернуться к началу |
|
|
sinoptik
цитировать
Зарегистрирован: 20 Авг 2009 16:29:34 Сообщения: 10
|
Добавлено: 02 Сен 2009 18:39:29 Заголовок сообщения: |
|
|
Большое спасибо, разобрался.
Основное мое желание было не цеплять к итак разросшемуся котроллеру Users еще три таблицы, по этому я создал плагин Location и вынес в него все что связанно с адресом и.т.д. запросы к нему делаю через requestAction, хотя в сети пишут, что это ресурсоемкий способ. С ClassRegistry я еще не успел разобраться. |
|
Вернуться к началу |
|
|
|