Русскоязычный форум, посвященный фреймворку Kohana
http://forum.kohanaframework.su/

Сортировка по полю для связанной таблицы
http://forum.kohanaframework.su/viewtopic.php?f=33&t=408
Страница 1 из 1

Автор:  foreach [ 11 окт 2012, 20:08 ]
Заголовок сообщения:  Сортировка по полю для связанной таблицы

Доброго времени суток форумчане.
Может быть мой вопрос покажется смешным, но что то документация не помогла и на ум ничего умного не приходит.
Есть две таблицы
city
id
name

и kanal.
id
gorod //Это id города
name
info


Они связаны между собой в модели
вот связь в модели kanal
Код:
protected $_belongs_to = array(
        'city' =>array(
            'model' => 'city',
            'foreign_key' => 'gorod',
            ),
         );

а в модели city

Код:
protected $_has_many = array(
        'kanal' =>array(
            'model' => 'kanal',
            'foreign_key' => 'gorod',
            ),
    );


Когда вывожу каналы, нужно сделать сортировку по городам. но не пойму как сделать.
делаю запрос
Код:
$kanals = ORM::factory('kanal')->order_by('gorod')->find_all();

Но у меня сортирует по полю таблицы kanal. То есть по id города.
А нужно по названию города. А название хранится в таблице city.
Как можно поступить в данной ситуации? И возможно ли вообще сделать такую сортировку?

Автор:  AmberLEX [ 12 окт 2012, 00:11 ]
Заголовок сообщения:  Re: Сортировка по полю для связанной таблицы

Когда вывожу каналы, то сортирует по полю таблицы kanal, т.е. по id города, где id города - это gorod, а нужно по названию города, а название города в city, так? )))
Если вы выводите каналы, при чем тут город. Все правильно сортирует, т.к. вы и написали - по id города
Напишите нормально вопрос.
Определитесь с языком gorod, city, id города

Автор:  Sergey [ 12 окт 2012, 00:38 ]
Заголовок сообщения:  Re: Сортировка по полю для связанной таблицы

Вобще ужас :D

Автор:  foreach [ 12 окт 2012, 01:10 ]
Заголовок сообщения:  Re: Сортировка по полю для связанной таблицы

AmberLEX писал(а):
Напишите нормально вопрос.
Определитесь с языком gorod, city, id города

1.Хозяин хочет сортировать каналы по названию города.(в админке в таблице(html) каналов выводится и название города к которому это канал принадлежит.Сортировать по клику в шапке таблиуы на названии города)
2. :shock: если б это я писал... А так мне досталась уже такая ботва. Переделывать на полном ходу базу я не решился.
3. Подразумевалось
Код:
//Это идентификатор города
. Так лучше? ;)

Автор:  foreach [ 12 окт 2012, 01:14 ]
Заголовок сообщения:  Re: Сортировка по полю для связанной таблицы

Sergey писал(а):
Вобще ужас :D

Это вы всего не видели. Вы бы заикаться начали от этого ужаса. :lol:

Автор:  AmberLEX [ 12 окт 2012, 02:10 ]
Заголовок сообщения:  Re: Сортировка по полю для связанной таблицы

А не проще было написать запрос, который у вас выводит каналы и города, а потом решить, что не так?
В приведенном вами запросе не очень понятно как там с каналом выводится название города.

Типа этого нужно
$kanals = ORM::factory('kanal')->with('city')->order_by('name')->find_all();
или
$kanals = ORM::factory('kanal')->with('city')->order_by('city.name')->find_all();
Пробуйте как-то так, но т.к. с именованиями кариес, может не сработать))

Автор:  foreach [ 13 окт 2012, 00:20 ]
Заголовок сообщения:  Re: Сортировка по полю для связанной таблицы

AmberLEX писал(а):
В приведенном вами запросе не очень понятно как там с каналом выводится название города.

Там у меня связи в модели прописаны.
А название города вот так получаю
Код:
foreach($kanals as $kanal)
{
echo $kanal->city->name_city;
}

где city это у мен название связи.

Страница 1 из 1 Часовой пояс: UTC + 4 часа [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/