Руководство по моделям Laravel без меток времени: отключение меток времени для повышения производительности и контроля

В Laravel модели являются важным компонентом системы Eloquent ORM (объектно-реляционное сопоставление). По умолчанию модели Laravel включают временные метки, которые автоматически обновляют поля created_atи updated_atпри каждом создании или обновлении записи. Однако в определенных сценариях вам может потребоваться отключить временные метки, чтобы оптимизировать производительность или получить больший контроль над вашими данными. В этой статье мы рассмотрим различные методы создания моделей Laravel без меток времени и предоставим примеры кода для иллюстрации каждого подхода.

Метод 1: отключение временных меток в классе модели
Самый простой способ отключить временные метки — указать свойство public $timestamps = false;в классе модели. Вот пример:

namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class YourModel extends Model
{
    public $timestamps = false;
    // Rest of the model code...
}

Метод 2: использование метода ->withoutTimestamps()
Другой подход — вызвать метод withoutTimestamps()внутри метода boot()модели. Этот метод сообщает Laravel не включать временные метки при сохранении или обновлении записей. Вот пример:

namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class YourModel extends Model
{
    protected static function boot()
    {
        parent::boot();
        static::withoutTimestamps();
    }
// Rest of the model code...
}

Метод 3: реализация признака Illuminate\Database\Eloquent\NoTimestamps
Laravel предоставляет признак NoTimestamps, который вы можете использовать в своей модели для отключения временных меток. Используя эту особенность, вам не нужно вручную устанавливать свойство $timestampsили изменять метод boot(). Вот пример:

namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\NoTimestamps;
class YourModel extends Model
{
    use NoTimestamps;
    // Rest of the model code...
}

Метод 4. Настройка столбцов временных меток.
Если вы хотите сохранить временные метки для определенных столбцов, но отключить столбцы created_atи updated_atпо умолчанию, вы можете настроить имена столбцов.. Laravel позволяет вам определять имена пользовательских столбцов для временных меток, используя свойства $createdAtи $updatedAtв вашем классе модели. Вот пример:

namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class YourModel extends Model
{
    protected $createdAt = 'custom_created_at';
    protected $updatedAt = 'custom_updated_at';
    // Rest of the model code...
}

Отключение временных меток в моделях Laravel может быть полезно для оптимизации производительности и обеспечения большего контроля над вашими данными. В этой статье мы рассмотрели четыре различных метода создания моделей Laravel без меток времени, включая отключение меток времени в классе модели, использование метода withoutTimestamps(), реализацию признака NoTimestampsи настройку имена столбцов временных меток. Применяя эти методы, вы можете точно настроить приложение Laravel в соответствии с вашими конкретными требованиями и повысить общую производительность.