Мне нужно переопределить вышеупомянутые методы, чтобы пропустить некоторые записи базы данных.Использование where
не вариант, так как мне придется использовать его каждый раз, так как в базе данных есть записи, которые мне не нужны большую часть времени, и мне не разрешено удалять их из БД.Вот моя попытка сделать это:
class SomeTable extends BaseModel {
public static function first() {
$query = static::query();
$data = $query->first();
if($data && $data->type == 'migration_type') return null;
return $data;
}
public static function get() {
$query = static::query();
$data = $query->get();
foreach($data as $key => $item) {
if($item->type == 'migration_type') unset($data[$key]);
}
return $data;
}
}
Проблема с этим кодом заключается в том, что он работает только при прямом вызове модели.Если я использую некоторые другие функции, такие как where
, перед get
или first
методами, он просто пропускает мой переопределенный метод.Каков будет правильный способ сделать это, и я должен поместить этот код в модель?
Мой вопрос не повторяется, так как в ответе на упомянутый вопрос сказано:
всезапросы, сделанные из Моделей, расширяющих вашу CustomModel, получат эти новые методы
И мне нужно переопределить эти две функции только для конкретной модели, а не для каждой в приложении, поскольку не все таблицы имеют столбец type
.Вот почему я написал их в классе модели.