Русскоязычный форум, посвященный фреймворку Kohana

Все о фреймворке Kohana. Обсуждение уроков, документации.
Текущее время: 27 апр 2024, 23:29

Часовой пояс: UTC + 4 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 10 ] 
Автор Сообщение
СообщениеДобавлено: 03 авг 2013, 16:22 
Не в сети
Бывалый

Зарегистрирован: 30 июл 2013, 15:31
Сообщения: 47
Всем привет,
Считываю данные с фильтром также по связанной таблице
Код:
      $TourFactory = ORM::factory('tour');
      if ( !empty($filters['name']) ) {
         $TourFactory->where_open();
         $TourFactory->where('tour.name', ' like ', "%".$filters['name']."%" );
         $TourFactory->or_where('tour.descr', ' like ', "%".$filters['name']."%" );
                 $TourFactory->or_where('region.name', ' like ', "%".$filters['name']."%" ); // фильтр также по связанной таблице
         $TourFactory->where_close();
      }
                ...
      $tour_result= $TourFactory  ->join('region') ->on('region.id', '=' , 'tour.region_id')  ->find_all();

Все работает за исключением того что я не нашел как в выходные поля добавить" region.name as region_name " ?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 03 авг 2013, 16:38 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 02 апр 2013, 16:26
Сообщения: 474
Откуда: Сергиев Посад
в select(), это вроде как логично или в where( mixed $column , string $op , mixed $value ) - mixed $column required - Column name or array($column, $alias) or object

$TourFactory->where_open(); и $TourFactory->where_close(); в данном случае ни к чему

_________________
Майкл Джордан играет в баскетбол. Чарльз Мэнсон убивает людей. Я пишу код. У каждого свой талант.


Последний раз редактировалось WinterSilence 03 авг 2013, 17:00, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 03 авг 2013, 16:56 
Не в сети
Бывалый

Зарегистрирован: 30 июл 2013, 15:31
Сообщения: 47
WinterSilence писал(а):
в select(), это вроде как логично или в where( mixed $column , string $op , mixed $value ) - mixed $column required - Column name or array($column, $alias) or object

Если писать
Код:
 ->select('`region.name` as region_name')

То ошибка в том что ORM ставит разделитель "`" вокруг всего выражения и получается ошибка
Код:
 SELECT `bp_``region`.`name`` as region_name`


Можно ли заставить ORM не ставить разделитель "`" автоматом а писать его самому ?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 03 авг 2013, 16:59 
Не в сети
Бывалый

Зарегистрирован: 30 июл 2013, 15:31
Сообщения: 47
Там 2 таблицы имеют поле name


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 03 авг 2013, 17:02 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 02 апр 2013, 16:26
Сообщения: 474
Откуда: Сергиев Посад
mstdmstd ага, насчет префиксов это я тупанул, а насчет селекта смотри мануал, нечего гадать на кофейной гуще

лучше подобные вещи реализовывать в виде методов модели:
Код:
// Model_Tour:
public function find_by_name($name)
{
   $name = "%{$name}%";
   return $this->select(array('region.name', 'region_name'))
            ->where('tour.name', 'LIKE', $name)
            ->or_where('tour.descr', 'LIKE', $name)
            ->or_where('region.name', 'LIKE', $name)
            ->join('region')
            ->on('region.id', '=', 'tour.region_id')
            ->find_all();
}

а еще лучше вместо join использовать связи между моделями:

Код:
protected $_has_many = array(
   // Access groups
   'groups' => array(
      'model' => 'Group',
      'through' => 'users_groups',
   ),
);

public function groups($active = TRUE, $as_array = TRUE)
{
   if ($active)
   {
      $groups = $this->groups->where('active', '=', 1)->find_all();
   }
   else
   {
      $groups = $this->groups->find_all();
   }
   return ($as_array ? $groups->as_array() : $groups);
}

_________________
Майкл Джордан играет в баскетбол. Чарльз Мэнсон убивает людей. Я пишу код. У каждого свой талант.


Последний раз редактировалось WinterSilence 03 авг 2013, 17:21, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 03 авг 2013, 17:13 
Не в сети
Бывалый

Зарегистрирован: 30 июл 2013, 15:31
Сообщения: 47
Вот так проконало:
Код:
 ->select( DB::expr('`bp_region`.`name` as region_name') )

Только префикс таблиц надо щас тянуть из конфы database


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 03 авг 2013, 17:22 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 02 апр 2013, 16:26
Сообщения: 474
Откуда: Сергиев Посад
буратино был тупой..тупой как дрова...

_________________
Майкл Джордан играет в баскетбол. Чарльз Мэнсон убивает людей. Я пишу код. У каждого свой талант.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 03 авг 2013, 17:30 
Не в сети
Бывалый

Зарегистрирован: 30 июл 2013, 15:31
Сообщения: 47
WinterSilence писал(а):
буратино был тупой..тупой как дрова...

?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 03 авг 2013, 17:33 
Не в сети
Бывалый

Зарегистрирован: 30 июл 2013, 15:31
Сообщения: 47
И как кстати получить префикс таблиц ? С наскоку не получилась...


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 04 авг 2013, 09:00 
Не в сети
Бывалый

Зарегистрирован: 30 июл 2013, 15:31
Сообщения: 47
mstdmstd писал(а):
И как кстати получить префикс таблиц ? С наскоку не получилась...

отвечу сам себе :
Код:
      $default_db= Database::instance('default');
      $table_prefix = $default_db->table_prefix();

Спасибо за помощь!


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 10 ] 

Часовой пояс: UTC + 4 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 68


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Все о фреймворке Kohana  | 
Powered by phpBB® Forum Software © phpBB Group