Страница 1 из 1

Поиск объявлений только с Фото

СообщениеДобавлено: 27 апр 2014, 12:05
lomuk
Подскажите как добавить к поиску критерий "поиск с фото"

Re: Поиск объявлений только с Фото

СообщениеДобавлено: 28 апр 2014, 14:51
andipas
В модель protected/modules/apartments/models/Apartment.php добавляем scopes withPhoto:

Код: Выделить всё

    
public function scopes()
    {
        return array(
            
'onlyAuthOwner' => array(
                
'condition' => $this->getTableAlias() . '. owner_id = ' Yii::app()->user->id,
            ),
            
'withPhoto'=>array(
                
'condition' => 'EXISTS(SELECT 1 FROM {{images}} `i` WHERE t.id = i.id_object)',
            ),
        );
    }
 


в protected/modules/quicksearch/controllers/MainController.php в методе actionMainsearch

добавляем

Код: Выделить всё

        
if(isset($_GET['wp']) && $_GET['wp'] == 1){
            
$criteria->scopes = array('withPhoto');
        }
 


Теперь если в url поиска укажем этот параметр search?wp=1, то выведутся объявления только с фото. Соответственно в поисковой форме, можно сделать чекбокс типа:

Код: Выделить всё
<label for="with_photo">
<
input type="checkbox" name="wp" id="with_photo"С фото
</label>
 

Re: Поиск объявлений только с Фото

СообщениеДобавлено: 29 апр 2014, 02:09
lomuk
Сделал всё как написано, но выводит все объявления, с фото и без

В url получается &wp=on, при замене на &wp=1 тоже не ищет

Re: Поиск объявлений только с Фото

СообщениеДобавлено: 29 апр 2014, 07:19
andipas
lomuk писал(а):Сделал всё как написано, но выводит все объявления, с фото и без

В url получается &wp=on, при замене на &wp=1 тоже не ищет


Описное решение проверял, работает как надо.

Возможно если вы добавили этот код:

Код: Выделить всё

        if
(isset($_GET['wp']) && $_GET['wp'] == 1){
            $criteria->scopes = array('withPhoto');
        }
 


в самое начало actionMainsearch ? Нужно добавлять пониже, вместе с другими $criteria

чтобы было &wp=1

Код: Выделить всё
<input type="checkbox" name="wp" id="with_photo" value="1"> 
 


upd. Описанное решение подойдет для сайта с < 1000 объявлений. Для сайта с большим кол-вом объявлений, решение в 2-х словах:
1. прописать отдельное поле - флаг (with_photo) в таблице apartment
2. сделать скрипт который заполнит это поле для текущих фото
3. настроить сохранение фотографий, чтобы этот флаг был = 1 когда есть фото, и = 0 когда их нет
4. сделать поиск по данному полю