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