2015-05-26 13 views
13

Tôi đủ hạnh phúc để làm việc với một dự án có (không) tên cột rất nhất quán trong cơ sở dữ liệu MySQL của chúng tôi. Chúng tôi có camelCase, PascalCase, 'Id', ID và điều đó khiến tôi phát điên. Tôi đã quyết định bắt đầu sử dụng Eloquent trong ứng dụng của chúng tôi (không phải là Laravel). Tôi rất muốn có phương thức nhận giá trị của khóa chính một cách dễ dàng mà không biết tên cột, ví dụ:Lấy khóa chính của mẫu mô hình Eloquent

// User's primary key column is called UserID 
$user = User::find(1337); 
$userId = $user->id(); // = 1337 

Có cách nào để thực hiện việc này hay tôi sẽ phải tự thêm phương pháp này?

+0

Bạn có hỏi liệu đây có phải là hùng hồn không? –

+0

Đánh dấu là chính xác nhưng mặc dù bạn có thể sử dụng mutators trong tất cả các mô hình của bạn cho tên nhất quán như id() (chức năng trong mô hình) http://laravel.com/docs/5.0/eloquent#accessors-and-mutators –

Trả lời

27

Bạn nên có định nghĩa một lĩnh vực được bảo vệ trong mô hình của bạn nói hùng biện gì cột khóa chính là:

protected $primaryKey = 'guid'; 

Sau đó, bạn có thể truy cập vào tài sản đó trong mô hình của bạn

Phương pháp mô hình của getKey() nên cung cấp cho bạn giá trị của khóa chính, trong khi getKeyName() phải cho bạn biết tên cột nào được sử dụng cho khóa chính

Các vấn đề liên quan