У меня есть набор «клиентов», и они отображаются в GridView. «Клиенты» не могут быть удалены обычным пользователем, только помечены для удаления. Однако мне бы хотелось, чтобы они не отображались в списке, если они помечены для удаления.
Я использую Yii2, и таблица мягкого удаления содержит три столбца, которые относятся к данным «foreign_table», «foreign_column» и «foreign_value». Он настроен так, что я не хочу удалять данные из таблицы «Клиенты», если в этом нет необходимости.
Как бы я отфильтровать результаты GridView?
Буду ли я использовать $ модель-> поиск?
Я считаю, что вы могли бы использовать $model->search
отфильтровать результат при условии, что следующие шаги уже выполнены:
state
или же status
,search()
Метод Модели представлен $model
Вы определяете критерии, используемые для фильтрации результатов, используя: $criteria->condition = 'status=1 OR status=2';
,В зависимости от вашей базы данных и того, как вы решили пометить или пометить как удаленный, вам может потребоваться изменить $criteria
, Вы даже можете использовать $criteria->with
включить зарубежные таблицы.
Таким образом, у вас есть таблица, в которой вы сохраняете ссылки на элементы, которые следует рассматривать как удаленные.
Я думаю, что было бы разумно переопределить find () класса Client, поскольку во многих случаях можно игнорировать помеченных как удаленных клиентов. Если это так, вы можете написать соответствующий запрос в find (). В качестве приятного побочного эффекта GridView будет автоматически показывать только не помеченных как удаленных клиентов.
Чтобы получить клиентов, помеченных как удаленные, вам, конечно, понадобится дополнительный метод, если он вообще нужен (вы можете удалить их непосредственно в БД, и для этого вам не нужен код php). Но в большинстве случаев они вам не нужны. Таким образом, вы можете отфильтровать их, переопределив метод поиска.