These are chat archives for php-ua/yii

18th
Feb 2017
indahouse-aleksandr
@indahouse-aleksandr
Feb 18 2017 11:41
@TaPTaK ну Search класс создай.
@TaPTaK по моему его даже gii может создавать (Не помню точно, возможоно ошибаюсь)
@TaPTaK Вот у меня таких вот полно

<?php
namespace common\models;

use yii\data\ActiveDataProvider;

class EmployeeSearch extends Employee
{
    public function search($params)
    {
        $query = Employee::find();
        $this->load($params);
        $dataProvider = new ActiveDataProvider(['query' => $query]);
        if (!$this->validate()) {
            return $dataProvider;
        }

        if($this->id){
            $query->andFilterWhere(['id' => $this->id]);
        }

        if($this->status){
            $query->andFilterWhere(['status' => $this->status]);
        }

        if($this->first_name){
            $query->andFilterWhere(['first_name' => $this->first_name]);
        }

        if($this->last_name){
            $query->andFilterWhere(['last_name' => $this->last_name]);
        }

        if($this->address){
            $query->andFilterWhere(['address' => $this->address]);
        }


        return $dataProvider;

    }
}

?>
@TaPTaK Или я чего то не понимаю в твоем вопросе ?
indahouse-aleksandr
@indahouse-aleksandr
Feb 18 2017 11:49
@TaPTaK Посмотрел. Да ! gii умеет такие классы автоматом создавать. Даже поле есть специальное в редакторе CRUD Search Model Class называется.
Andrey Kravchuk
@TaPTaK
Feb 18 2017 12:11
@indahouse-aleksandr вопрос не в том, с Search Model Class проблем нету, внимательнее просмотри запрос который я скинул вчера, с твоим примером проблем нету ,поисковую систему я умею организовывать, да и с такой фильтрацией раньше тож проблем небыло(с использованием doctrine в symfony)... тут проблема заключается в том что нада множественное условие по одному полю(many-to-many) создать... у товаров есть связь с таблицей значений характеристик(много к многим), нада отфильтровать товары у котороых есть совпадения выбранных в фильтре значений характеристик... как на розетке и ей подобных сайтах

@indahouse-aleksandr типа

((`characteristic_value`.`id`='135') OR (`characteristic_value`.`id`='134')) 
          AND (`characteristic_value`.`id`='138') 
          AND (`characteristic_value`.`id`='142')

тут для примера я накинул запрос, в условии которого подразумевается что в фильтре сейчас выбранные пункты фильтра - бренд(асус или леново) и проц i7 и дискретная видяха допустим...

это я описал чтоб было более понятно как мне нужно отфильтровать