Tôi có thể thay đổi khóa chính của Eloquent model không.
Ví dụ: tôi muốn đặt khóa chính admin_idthay vì 'id'?
Tôi biết tôi có thể thay đổi tên bảng cho mô hình như
protected $table = "admin";
Có cái gì đó tương tự cho khóa chính không?
Tôi có thể thay đổi khóa chính của Eloquent model không.
Ví dụ: tôi muốn đặt khóa chính admin_idthay vì 'id'?
Tôi biết tôi có thể thay đổi tên bảng cho mô hình như
protected $table = "admin";
Có cái gì đó tương tự cho khóa chính không?
Câu trả lời:
Đúng
class User extends Eloquent {
protected $primaryKey = 'admin_id';
}
$primaryKey = array('key1', 'key1'); github.com/laravel/framework/issues/5517#issuecomment-52996610
class User extends Eloquent {
protected $primarykey = 'admin_id';
}
nhưng
class User extends Eloquent {
protected $primaryKey = 'admin_id';
}
lưu ý ký tự K (viết hoa) trên biến $ primaryKey
Nếu bạn muốn sử dụng khóa tổng hợp (một chuỗi)
Bạn cần đảm bảo rằng bạn đã đặt public $incrementing = falsenếu không laravel sẽ truyền trường thành Số nguyên, cho0
class User extends Model {
protected $primaryKey = 'my_string_key';
public $incrementing = false;
}
Biến khóa chính có phân biệt chữ hoa chữ thường và phải $primaryKeyhoạt động.
Thí dụ:
protected $primaryKey = 'your_primary_key_id';
Ví dụ trong lớp Model:
class User extends Eloquent {
protected $primaryKey = 'your_primary_key_id';
}
class User extends Eloquent {
protected $primaryKey = 'admin_id';
}
Theo tài liệu Laravel:
Eloquent cũng sẽ giả định rằng mỗi bảng có một cột khóa chính được đặt tên id. Bạn có thể xác định một thuộc $primaryKeytính để ghi đè quy ước này.
Ngoài ra, Eloquent giả định rằng khóa chính là một giá trị số nguyên tăng dần, có nghĩa là theo mặc định, khóa chính sẽ tự động được chuyển thành int. Nếu bạn muốn sử dụng khóa chính không tăng hoặc không phải số, bạn phải đặt thuộc tính công khai $incrementingtrên mô hình của mình thành false.
Để gán một khóa chính, bạn nên ..->
class User extends Eloquent {
protected $primaryKey='admin_id';
}
$primarykeyphải là$primaryKey(chữ hoa K) và sẽ không hoạt động nếu không.