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(),

1

Другие решения

Я думаю, что вы должны использовать Индивидуальный класс запросов

Это уже существует в библиотеке, что вы используете — здесь GitHub

Если вы хотите — вы также можете переопределить find метод.

0

По вопросам рекламы [email protected]