[Bài đọc] Các quy tắc khi tạo Model
NỘI DUNG BÀI VIẾT
Bây giờ, hãy cùng xem ví dụ về model Flight mà chúng ta sẽ dùng để lấy và lưu thông tin trong bảng flights:
<?php namespace App; use Illuminate\Database\Eloquent\Model; class Flight extends Model { // }
Tên bảng
Để ý là chúng ta không hề cho Eloquent biết là bảng nào được sử dụng cho model Flight
. Vì kiểu “snake case”, tên class ở số nhiều sẽ được sử dụng như tên table trừ khi có một tên khác được khai báo. Vì thế, trong trường hợp này, Eloquent sẽ coi model Flight
lưu dữ liệu vào trong bảng flights
Bạn có thể chỉ định tên table khác cho model bằng cách khai báo thuộc tính table
trong model:
<?php namespace App; use Illuminate\Database\Eloquent\Model; class Flight extends Model { /** * The table associated with the model. * * @var string */ protected $table = 'my_flights'; }
Khóa chính
Eloquent cũng xem mỗi bảng có một cột khóa chính tên là id. Bạn có thể tạo một thuộc tính $primaryKey để thay đổi tên cột này.
Ngoài ra, Eloquent cũng coi primary key là một giá trị nguyên tăng dần, có nghĩa là về mặc định primary key sẽ được cast về kiểu int
tự động. Nếu bạn muốn sử dụng primary không tăng dần hay không phải là dạng số, bạn cần thay đổi thuộc tính $incrementing
trong model thành false
.
Timestamps
Mặc định, Eloquent cần hai cột created_at
và updated_at
có mặt trong các bảng. Nếu bạn không muốn những columns này tự động được quản lý bởi Eloquent, thiết lập thuộc tính $timestamps
trong model thành false
:
<?php namespace App; use Illuminate\Database\Eloquent\Model; class Flight extends Model { /** * Indicates if the model should be timestamped. * * @var bool */ public $timestamps = false; }
Nếu bạn muốn thay đổi định dạng của timestamps, thiết lập thuộc tính $dateFormat trong model. Thuộc tính này xác định cách mà các thộc tính kiểu date được lưu trong cơ sở dữ liệu cũng như cách định dạng khi model được chuyển thành mảng hay dạng JSON
<?php namespace App; use Illuminate\Database\Eloquent\Model; class Flight extends Model { /** * The storage format of the model's date columns. * * @var string */ protected $dateFormat = 'U'; }
Nếu bạn cần thay đổi tên của cột trong timestamps, thiết đặt lại hằng CREATE_AT và UPDATED_AT trong model:
<?php class Flight extends Model { const CREATED_AT = 'creation_date'; const UPDATED_AT = 'last_update'; }
Kết nối cơ sở dữ liệu
Mặc định, tất cả các Eloquent model sử dụng cấu hình kết nối cơ sở dữ liệu mặc định trong ứng dụng. Nếu bạn muốn sử dụng một kết nối khác cho model, sử dụng thuộc tính $connection:
<?php namespace App; use Illuminate\Database\Eloquent\Model; class Flight extends Model { /** * The connection name for the model. * * @var string */ protected $connection = 'connection-name'; }
Leave a Reply