Как я могу добавить предложение where по умолчанию ко всем запросам для определенных моделей?

#knex.js #objection.js

Вопрос:

Есть ли способ добавить определенное предложение where по умолчанию к определенным моделям в возражении?

Контекст

Некоторые из моих моделей возражений используют «мягкое удаление» — вместо того, чтобы фактически удалять их из базы данных, их deleted_at столбец помечен меткой времени.

По умолчанию я хотел бы убедиться, что where deleted_at is null это включено по умолчанию во все мои запросы, чтобы мне не пришлось добавлять это вручную.

Есть ли способ сделать это в возражении или в Knex?

Ответ №1:

Вы можете перезаписать query метод в своей модели:

 class SoftDeleteModel extends Model {
    static query(...args) {
        return super.query(...args).where('deleted_at', null)
    }
}
 

super.query относится к «оригинальному» / родительскому query методу возражения.

Комментарии:

1. Это именно то, что я искал. Спасибо!