За последние 24 часа нас посетили 21920 программистов и 989 роботов. Сейчас ищут 670 программистов ...

doctrine2 + sphinx

Тема в разделе "Прочие вопросы по PHP", создана пользователем dapperkop, 20 мар 2014.

  1. dapperkop

    dapperkop Активный пользователь

    С нами с:
    26 сен 2013
    Сообщения:
    890
    Симпатии:
    0
    Доброго времени суток!
    Возникла проблема при выборке объектов по массиву идентификаторов.
    Вообщем, расскажу по порядку...
    Делаю запрос к sphinx, он возвращает мне массив matches с идентификаторами нужных мне объектов, отсортированный по весам.

    Код (Text):
    1. Array
    2.         (
    3.             [2] => Array
    4.                 (
    5.                     [weight] => 29
    6.                     [attrs] => Array
    7.                         (
    8.                             [deleted] => 0
    9.                             [moderated] => 1
    10.                         )
    11.  
    12.                 )
    13.  
    14.             [1] => Array
    15.                 (
    16.                     [weight] => 18
    17.                     [attrs] => Array
    18.                         (
    19.                             [deleted] => 0
    20.                             [moderated] => 1
    21.                         )
    22.  
    23.                 )
    24.  
    25.             [3] => Array
    26.                 (
    27.                     [weight] => 15
    28.                     [attrs] => Array
    29.                         (
    30.                             [deleted] => 0
    31.                             [moderated] => 1
    32.                         )
    33.  
    34.                 )
    35.  
    36.             [4] => Array
    37.                 (
    38.                     [weight] => 15
    39.                     [attrs] => Array
    40.                         (
    41.                             [deleted] => 0
    42.                             [moderated] => 1
    43.                         )
    44.  
    45.                 )
    46.  
    47.             [5] => Array
    48.                 (
    49.                     [weight] => 15
    50.                     [attrs] => Array
    51.                         (
    52.                             [deleted] => 0
    53.                             [moderated] => 1
    54.                         )
    55.  
    56.                 )
    57.  
    58.         )
    Теперь встал вопрос получения всех этих объектов с помощью doctrine. Обязательно с сохранением порядка по весам каждого найденного объекта. Делать запросы в цикле как-то не совсем правильно, следовательно, нужно получить объекты одним запросом.
    Воспользовался таким запросом

    Код (Text):
    1. SELECT test FROM \Acme\TestBundle\Entity\Test test WHERE test.id IN (:ids)
    Получил нужные мне объекты, но отсортированы они уже по идентификатору.
    Как быть в данной ситуации? Как сохранить сортировку по весам?
     
  2. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    ORDER BY weight DESC
     
  3. dapperkop

    dapperkop Активный пользователь

    С нами с:
    26 сен 2013
    Сообщения:
    890
    Симпатии:
    0
    А weight в запросе откуда взять?

    Добавлено спустя 2 минуты 46 секунд:
    Смотрите, есть php массив, указанный выше...

    Есть ли возможность в mysql передать php массив и затем обращаться в mysql запросе к элементам, ключам массива?
     
  4. Akuma

    Akuma Активный пользователь

    С нами с:
    17 июн 2009
    Сообщения:
    14
    Симпатии:
    0
    Адрес:
    Между небом и асфальтом
    Пару месяцев назад делал связку доктрины и sphinx, вот что получилось: http://akuma.su/blog/poisk-cherez-sphinx-v-symfony2.html
    Хотя и не совсем то, что нужно вам, но может быть натолкнет на мысль.