[Bài đọc] Các quy tắc khi tạo Model

3. Làm việc với Cơ sở dữ liệu

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_atupdated_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

Your email address will not be published. Required fields are marked *