В 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 в соответствии с вашими конкретными требованиями и повысить общую производительность.