Фильтр в gridvew по связанной таблице и tablePrefix

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Закрыто
louisvuitton
Сообщения: 203
Зарегистрирован: 2014.02.16, 03:09

Фильтр в gridvew по связанной таблице и tablePrefix

Сообщение louisvuitton »

Есть магазины и скидки.
Скидка привязана к магазину полем id_store

В gridView скидки сделал вывод названия магазина вместо id и хочу сделать поиск по этому названию.
(как здесь )

Код search

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

 public function search($params)
    {
        $query = Sale::find();

        $dataProvider = new ActiveDataProvider([
            'query' => $query,
        ]);

        if (!($this->load($params) && $this->validate())) {
            return $dataProvider;
        }

// добавил
        $query->joinWith('store');

        $query->andFilterWhere([
            'id' => $this->id,
// так было 
//            'id_store' => $this->id_store,
            'product_type' => $this->product_type,
        ]);

        $query->andFilterWhere(['like', 'description', $this->description])
        ->andFilterWhere(['like', 'store.name', $this->id_store]);  // так добавил

        return $dataProvider;
    }
Получаю:

Column not found: 1054 Unknown column 'store.name' in 'where clause'
The SQL being executed was: SELECT COUNT(*) FROM `td_sale` LEFT JOIN `td_store` ON `td_sale`.`id_store` = `td_store`.`id` WHERE `store`.`name` LIKE '%asdf%'


Почему-то не добавляется префикс таблицы =\ store без td_
Если написать вручную ->andFilterWhere(['like', 'td_store.name', $this->id_store]);
то все работает нормально.

Но хотелось бы отвязаться от префикса. пробовал всякие комбинации с {{ }} не сработало
Можно как-то не писать это td_?
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Фильтр в gridvew по связанной таблице и tablePrefix

Сообщение zelenin »

{{%store%}} или как там у вас написано в модели?
louisvuitton
Сообщения: 203
Зарегистрирован: 2014.02.16, 03:09

Re: Фильтр в gridvew по связанной таблице и tablePrefix

Сообщение louisvuitton »

Спс, действительно был нужен %

методом тыка выяснил что

{{%store%}}.name генерирует `td_storetd_`.name
{{%store}}.name генерирует `td_store`.name (name без апострофов)
{{%store}}.{{name}} генерирует то что нужно `td_store`.`name`

интересно реально, кроме как в исходниках, найти такую инфу =\
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Фильтр в gridvew по связанной таблице и tablePrefix

Сообщение zelenin »

louisvuitton писал(а): интересно реально, кроме как в исходниках, найти такую инфу =\
в документации
Закрыто