The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Perl HASH ref"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (Perl)
Изначальное сообщение [ Отслеживать ]

"Perl HASH ref"  +/
Сообщение от Azudim email(??) on 04-Мрт-11, 21:53 
Подскажите пожалуйста, как можно переписать вот эту строчку ?

$search{'stcode.name'} = {('like' => "\%$params->{search_name}\%")} if (%$params->{search_name});

так что бы функционал сохранился?
а то летит ошибка на эту строку: Using a hash as a reference is deprecated at bla-bla..

я пробую в один хэш поместить примерно такую конструкцию:
    my @data = $rs->search(
                { 'me.id' => '10',
                                  'me.name' => { 'Like' => 'test'}
                                },{
                                  page => 1
                                 });
        что бы выглядело так:
          my @data = $rs->search(
                { %search },{
                                  page => 1
                                 });

  И оно работает! Только ругается мол Using a hash as a reference is deprecated
  Кусок кода взят из MyApp::Controller::AppTest - поиск и вывод из DBIx модели.
  Можно конечно напрямую подставить 'me.id' = $cgi_param->{id}, но если он undef - то
  в SQL запросе все равно будет WHERE с этим пустым me.id.
  Полается если на страничке может быть 20 запросов/параметров, из которых только 1 указан, то все равно SQL запрос будет содержать 20 WHERE me.request = '', поэтому хочется в поиск давать только определенные ранее параметры.  

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Perl HASH ref"  +/
Сообщение от Azudim email(??) on 04-Мрт-11, 22:42 
сам додумался.. =)

    my %search;
    $search{'me.code'} = $params->{pav_id} if (%$params->{pav_id});
    $search{'stcode.name'}        = { 'like' => "\%$params->{search_name}\%"}     if ($params->{search_name});
    $search{'streetcode.name'}    = {'like' => "\%$params->{search_street}\%"}     if ($params->{search_street});
    $search{'distcode.name'}    = {'like' => "\%$params->{search_district}\%"}    if ($params->{search_district});
    $search{'okrugcode.name'}    = {'like' => "\%$params->{search_okrug}\%"}     if ($params->{search_okrug});

    my @data = $rs->search(
                %search,
                {
                    prefetch => [  {'stcode' => 'streetcode'},{'stcode' => {'distcode' => 'okrugcode'}} ],
                    rows => 10,
                    page => 1
                });

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру