Cake-PHP.ru
Форум программистов CakePHP
(на сайт)
Watched Topics
FAQ
Поиск
Пользователи
Группы
Регистрация
Профиль
Войти и проверить личные сообщения
Вход
Список форумов Cake-PHP.ru
->
Общий
Ответить
Имя
Тема
Сообщение
Смайлики
Дополнительные смайлики
Цвет шрифта:
По умолчанию
Тёмно-красный
Красный
Оранжевый
Коричневый
Жёлтый
Зелёный
Оливковый
Голубой
Синий
Тёмно-синий
Индиго
Фиолетовый
Белый
Чёрный
Размер шрифта:
Размер шрифта
Очень маленький
Маленький
Обычный
Большой
Огромный
Закрыть теги
[quote="Serginho"]Доброго времени суток. Суть пробелмы. Есть 3 таблицы в БД: users, cities, countries и соответствующие им модели [b]users:[/b] [code] <?php class User extends AppModel{ var $name = 'User'; var $belongsTo = array( 'City' => array( 'className' => 'City', 'foreignKey' => 'city_id' ) ); } ?> [/code] [b]cities[/b] [code] <?php class City extends AppModel{ var $name = 'City'; var $belongsTo = array( 'Country' => array( 'className' => 'Country', 'foreignKey' => 'country_id' ) ); } ?> [/code] [b]countries[/b] [code] <?php class Country extends AppModel{ var $name = 'Country'; } ?> [/code] Как видно, талицы связаны по id. В контроллере вывожу их на екран с помощью paginate: [code] $this->paginate = array( 'limit' => $limit, 'fields' => array( 'User.id', 'User.first_name', 'City.name', 'User.last_name', 'User.city_id', 'User.email')); $data = $this->paginate('User'); $this->set('users', $data); [/code] Вопрос: Как мне добавить поле Country.name? Ведь связано с моделью City :( Надеюсь понятно обьяснил. Заранее спасибо.[/quote]
Настройки
HTML
ВЫКЛЮЧЕН
BBCode
ВКЛЮЧЕН
Смайлики
ВКЛЮЧЕНЫ
Отключить в этом сообщении BBCode
Отключить в этом сообщении смайлики
Если у вас плохое зрение или вы не можете прочесть этот код по какой-то другой причине, то обратитесь за помощью к
Администратору
.
Код подтверждения: *
Введите код в точности так, как вы его видите. Код является регистро-зависимым, а символ нуля имеет косую линию внутри цифры.
Часовой пояс: GMT + 3
Перейти:
Выберите форум
CakePHP Форум
----------------
Общий
Установка и настройка
Творчество
Вопросы и пожелания
Комментарии к главам руководства по CakePHP 1.1
Обзор темы
Автор
Сообщение
Vlad
Добавлено: 09 Янв 2010 13:50:14
Заголовок сообщения:
Давайте отсекать лишнее.
Я не понял - у вас Contain не работает? (забыли пока про paginate)
Если при банальной выборке, с использованием Контейна - вы не видите полей Country - то проблема в связях таблиц.
Если контейн работает, то проблема в педжинации.
Serginho
Добавлено: 08 Янв 2010 17:59:59
Заголовок сообщения:
Да, собственно, не в условии дело.
Полей Country не видит как таковых, или contain без условий не работает?
Спасибо за ответ.
Vlad
Добавлено: 08 Янв 2010 17:46:19
Заголовок сообщения:
Ну а чего же не вписали нужное вам условие?
'contain' => array('Country' => array('conditions' => array('Country.name LIKE'=>$Country)));
?
Или контейн должен был сам догадаться, какое условие вас интересует?
)
И почему вы LIKE используете?
Serginho
Добавлено: 08 Янв 2010 17:06:29
Заголовок сообщения:
В модели User
Код:
var $actsAs = array('Containable');
В контроллере:
Код:
$this->paginate = array(
'contain' => array('City', 'Country')
);
$this->paginate('User');
Что не так?
Vlad
Добавлено: 08 Янв 2010 16:05:08
Заголовок сообщения:
Serginho
Так я не понял, Contain не работает что ли? Приведите код с использованием контейна...
Serginho
Добавлено: 08 Янв 2010 15:23:16
Заголовок сообщения:
Serginho писал(а):
А теперь появился новый вопрос:
Вывести то я вывел, а каким образом мне сделать вот такой запрос:
Код:
.....
$this->paginate = array(
'recursive' => 2
);
.....
$this->paginate('User',array('User.first_name LIKE' => $Keywords,'Country.name LIKE'=>$Country));
Поля Country.name напрочь не видит
И всё же, есть какое то решение?
Serginho
Добавлено: 30 Ноя 2009 23:28:30
Заголовок сообщения:
С помошью рекурсии, так как мои User и Country не звязаны между собой.
З.Ы. В кейке только несколько дней работаю, так что могу ошибаться.
michas
Добавлено: 30 Ноя 2009 23:18:02
Заголовок сообщения:
Так каким способом решили задачу?
На мой взгляд контейна бы хватило...
Serginho
Добавлено: 30 Ноя 2009 17:05:54
Заголовок сообщения:
Век живи - век учись.
В очередной раз спасибо.
Vlad
Добавлено: 30 Ноя 2009 16:52:46
Заголовок сообщения:
А что, сделать запрос который, в отличие от LIKE будет СУРЬЁЗНО быстрее, никак низя?
City.country_id => $id
$id = число
И никаких LIKE запросов? М?
Serginho
Добавлено: 30 Ноя 2009 16:36:31
Заголовок сообщения:
А теперь появился новый вопрос:
Вывести то я вывел, а каким образом мне сделать вот такой запрос:
Код:
.....
$this->paginate = array(
'recursive' => 2
);
.....
$this->paginate('User',array('User.first_name LIKE' => $Keywords,'Country.name LIKE'=>$Country));
Поля Country.name напрочь не видит
Serginho
Добавлено: 30 Ноя 2009 15:28:54
Заголовок сообщения:
Vlad
, Большое спасибо! Именно то, что нужно.
Vlad
Добавлено: 30 Ноя 2009 14:44:43
Заголовок сообщения:
Но если посмотреть на то, какое кол-во запросов генерит кейк.
Я бы, всё же, предложил не привязывать табличку Стран.
А сделать запрос (как у тебя был)
т.е. получать прсто country_id
Второе - добавить банальный Country->find all (только название - name)
Третье, при помощи В Set::подходящей функции добавить в City необходимое поле COuntry['name']
(Описание функции Set) http://evilbloodydemon.wordpress.com/2009/01/20/set-class-master-of-arrays/
Vlad
Добавлено: 30 Ноя 2009 11:45:05
Заголовок сообщения:
Ммм. Я правильно понял, нужно было вот это?
Код:
app/controllers/users_controller.php (line 32)
Array
(
[0] => Array
(
[User] => Array
(
[id] => 1
[first_name] => John
[last_name] => Doe
[city_id] => 1
[email] =>
john.doe@gmail.com
)
[City] => Array
(
[id] => 1
[country_id] => 1
[name] => Kirovograd
[Country] => Array
(
[id] => 1
[name] => Ukraine
)
)
)
[1] => Array
(
[User] => Array
(
[id] => 2
[first_name] => Mike
[last_name] => Henrikson
[city_id] => 2
[email] =>
mike@yahoo.com
)
[City] => Array
(
[id] => 2
[country_id] => 2
[name] => New York
[Country] => Array
(
[id] => 2
[name] => USA
)
)
)
...
Если да, то в $this->paginate - добавляешь $recursive => 2
Если нет, то опиши ещё раз точнее - что тебе надобно
Serginho
Добавлено: 29 Ноя 2009 23:10:19
Заголовок сообщения:
Без проблем, даже не знаю, как вас благодарить...
http://mfc-marcel.zzl.org/adress.sql
Powered by phpBB © 2001, 2005 phpBB Group
Русская поддержка phpBB
Если ничего интересного не нашли, можно рекламу почитать, а рекламируется у нас сегодня «».