Yii2, Softdelete, self::tableName() и игнорирование `удаленных` записей
У меня есть базовый класс модели, который содержит поведение SoftDelete (cornernote/yii2-softdelete
). При удалении записи столбец в таблице deleted_at
заполнен меткой времени.
Попытка переопределить метод find () в base
модель, но self::className() не возвращает префикс таблицы с именем.
return parent::find()->where([self::tableName() . '.deleted_at' => null]);
Я должен добавить его к каждому классу модели, чтобы получить правильное (полное) имя таблицы.
Вопрос: как лучше всего игнорировать записи в таблице с заполненным столбцом. Решение должно работать при обращении к модели для ActiveDataProvider([...]), find()->...one() и find()->...all().
ТИА
2 ответа
Вы должны прочитать это о поздних статических привязках:
http://php.net/manual/en/language.oop5.late-static-bindings.php
Поздние статические привязки вводят
static
ключевое слово, которое ссылается на класс, который был первоначально вызван во время выполнения
Итак, вы должны просто использовать static::tableName()
вместо self::tableName()
,
Я думаю, что вы должны использовать Customized Query Class
Он уже существует в библиотеке, что вы используете - здесь GitHub
Если вы хотите - вы также можете переопределить find
метод.