| Предыдущая тема :: Следующая тема   | 
	
	
	
		| Автор | 
		Сообщение | 
	
	
		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 я еще не успел разобраться. | 
			 
		  | 
	
	
		| Вернуться к началу | 
		 | 
	
	
		  | 
	
	
	
	
	
		 |