
# Timestamps
Mặc định, Eloquent yêu cầu hai cột created_at
và updated_at
tồn tại trên bảng cơ sở dữ liệu tương ứng với mô hình của bạn. Eloquent sẽ tự động thiết lập giá trị cho các cột này khi mô hình được tạo mới hoặc cập nhật.
Tuy nhiên, nếu bạn không muốn Eloquent tự động quản lý các cột thời gian này, bạn có thể cấu hình mô hình của bạn để bỏ qua việc tự động cập nhật các cột created_at
và updated_at
. Để làm điều này, bạn cần định nghĩa thuộc tính $timestamps
trên mô hình của bạn với giá trị false
.
Ví Dụ Cụ Thể
Mô Hình Mặc Định Với Cột Thời Gian
Khi bạn tạo một mô hình Eloquent mà không cấu hình thuộc tính $timestamps
, Eloquent sẽ tự động quản lý các cột thời gian:
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Post extends Model
{
// Eloquent tự động quản lý created_at và updated_at
}
Bỏ Qua Quản Lý Thời Gian
Nếu bạn không muốn Eloquent tự động quản lý created_at
và updated_at
, bạn có thể cấu hình mô hình của bạn như sau:
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Post extends Model
{
// Tắt quản lý created_at và updated_at
public $timestamps = false;
}
# Tùy Chỉnh Định Dạng Thời Gian
Nếu bạn cần tùy chỉnh định dạng của các timestamp trên mô hình Eloquent của bạn, bạn có thể thiết lập thuộc tính $dateFormat
trên mô hình. Thuộc tính này xác định cách các thuộc tính ngày tháng được lưu trữ trong cơ sở dữ liệu cũng như định dạng của chúng khi mô hình được chuyển đổi thành mảng hoặc JSON.
Ví Dụ Cụ Thể
Giả sử bạn muốn thay đổi định dạng ngày tháng từ mặc định (Y-m-d H:i:s
) thành định dạng khác, chẳng hạn như d/m/Y H:i:s
, bạn có thể thực hiện điều này bằng cách cấu hình thuộc tính $dateFormat
trong mô hình của bạn.
Mô Hình Với Định Dạng Tùy Chỉnh
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Post extends Model
{
// Đặt định dạng ngày tháng tùy chỉnh
protected $dateFormat = 'd/m/Y H:i:s';
}
Cách Hoạt Động
- Lưu Trữ Trong Cơ Sở Dữ Liệu: Khi bạn lưu một mô hình vào cơ sở dữ liệu, Eloquent sẽ sử dụng định dạng
d/m/Y H:i:s
để lưu trữ giá trị thời gian vào các cộtcreated_at
vàupdated_at
. - Chuyển Đổi Thành Mảng hoặc JSON: Khi bạn chuyển đổi mô hình thành mảng hoặc JSON, giá trị của các thuộc tính ngày tháng sẽ được định dạng theo cách bạn đã chỉ định trong thuộc tính
$dateFormat
.
# Tùy Chỉnh Tên Cột Thời Gian Trong Eloquent
Nếu bạn cần tùy chỉnh tên của các cột được sử dụng để lưu trữ timestamp (created_at
và updated_at
), bạn có thể định nghĩa các hằng số CREATED_AT
và UPDATED_AT
trên mô hình của bạn. Điều này cho phép bạn thay đổi tên các cột mặc định mà Eloquent sử dụng để lưu trữ thời gian tạo và cập nhật.
Ví Dụ Cụ Thể
Giả sử bạn có các cột trong bảng cơ sở dữ liệu với tên là created_on
và updated_on
thay vì created_at
và updated_at
. Bạn có thể cấu hình mô hình của bạn như sau:
Mô Hình Với Tên Cột Tùy Chỉnh
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Post extends Model
{
// Định nghĩa tên cột tùy chỉnh cho thời gian tạo và cập nhật
const CREATED_AT = 'created_on';
const UPDATED_AT = 'updated_on';
}
Cách Hoạt Động
- Lưu Trữ Trong Cơ Sở Dữ Liệu: Eloquent sẽ sử dụng các tên cột tùy chỉnh (
created_on
vàupdated_on
) thay vì các tên mặc định (created_at
vàupdated_at
) khi lưu trữ giá trị thời gian vào cơ sở dữ liệu. - Lấy Dữ Liệu: Khi bạn lấy dữ liệu từ cơ sở dữ liệu, Eloquent sẽ sử dụng các tên cột tùy chỉnh này để gán giá trị cho thuộc tính
created_at
vàupdated_at
của mô hình.
# Không Cập Nhật updated_at
Nếu bạn muốn thực hiện các thao tác với mô hình mà không làm thay đổi giá trị của timestamp updated_at
, bạn có thể sử dụng phương thức withoutTimestamps
. Phương thức này cho phép bạn thực hiện các thao tác trên mô hình mà không ảnh hưởng đến giá trị của updated_at
.
Ví Dụ Cụ Thể
Giả sử bạn có một mô hình Post
và bạn muốn cập nhật một thuộc tính của mô hình mà không làm thay đổi timestamp updated_at
, bạn có thể sử dụng withoutTimestamps
để thực hiện điều này.
Cập Nhật Mô Hình Mà Không Cập Nhật updated_at
use App\Models\Post;
// Tìm mô hình cần cập nhật
$post = Post::find(1);
// Thực hiện cập nhật mà không làm thay đổi timestamp
$post->withoutTimestamps(function () use ($post) {
// Cập nhật thuộc tính của mô hình
$post->title = 'New Title';
$post->save();
});
Danh mục
Bài viết liên quan

Các Mối Quan Hệ Trong Eloquent
Author: | ADMIN |
---|

Basic Eloquent Model and MVC
Author: | ADMIN |
---|

Eager Loading
Author: | ADMIN |
---|

Database: Seeding
Author: | ADMIN |
---|
Bài viết khác

Blade Basics
Author: | ADMIN |
---|

9 Mẹo Hữu Ích Khi Sử Dụng Blade Trong Laravel
Author: | ADMIN |
---|

Hiển thị giá trị trong Blade
Author: | ADMIN |
---|