2015-07-13 16 views
8

Vì vậy, tôi đang bối rối với điều này: Trong tài liệu chính thức của Laravel, họ nói:Sự khác biệt giữa Mô hình Eloquent và Mô hình là gì?

hùng hồn ORM kèm Laravel cung cấp một đẹp, đơn giản thực hiện ActiveRecord để làm việc với cơ sở dữ liệu của bạn. Mỗi bảng cơ sở dữ liệu có một "Mô hình" tương ứng được sử dụng để tương tác với bảng đó.

Ok sử dụng ở đây tất cả là tuyệt vời, tôi hiểu!

Vì vậy, tôi thực hiện một di cư để tạo ra một cơ sở dữ liệu: php nghệ nhân thực hiện: di cư create_items_table --Tạo = "items"

lớn đến đây quá :)

Vì vậy, về mặt lý thuyết mà nói, khi tôi sẽ thực hiện: php nghệ nhân thực hiện: mô hình mục, Laravel sẽ tạo ra một lớp php (được sử dụng để tương tác với bảng items):

class Item extends Eloquent { 

    ... 

    } 

Nhưng, trong rea l thế giới, khi tôi thực hiện: php nghệ nhân thực hiện: mô hình mục, Laravel tạo php class (được sử dụng để tương tác với bảng items) ::

class Item extends Model { 

    ... 

    } 

Vì vậy, Tại sao Người mẫu và không hùng biện ?? Tôi có mất tích không? Và sự khác biệt giữa Mô hình và Mô hình Eloquent là gì.

Và nếu có sự khác biệt, khi nào tôi nên sử dụng Eloquent và khi Model ...?

Cảm ơn bạn ^^

Trả lời

7

Tôi tìm thấy giải pháp cho câu hỏi của tôi ...

Vì vậy, thường bạn phải thêm một bí danh cho cấu hình của bạn/app.php

'aliases' => [ 
     'Eloquent' => Illuminate\Database\Eloquent\Model::class, 

Và khi bạn tạo một mô hình, Laravel sẽ use Eloquent; thay vì use Illuminate\Database\Eloquent\Model; này lý do tại sao tôi nghĩ rằng, một số người có thể sử dụng Model, khi khác có thể sử dụng hùng hồn, nó chỉ là một vấn đề cho một cảm giác ý nghĩa cho không gian tên: 3

+1

ya right @elarib sử dụng bí danh bạn cũng có thể sử dụng.thêm rất nhiều –

+0

Và tôi chỉ nhận thấy, theo Mặc định, mở rộng Eloquent nằm trong Laravel 4, trong khi Laravel 5 mở rộng Mô hình theo mặc định ... – elarib

+1

yap 5.1 cũng làm cho mở rộng Mô hình theo mặc định. Bạn không cần phải thêm mô hình này. –

1

hùng biện là tên được đặt cho (lập bản đồ đối tượng quan hệ) ORM mà tàu với Laravel. Eloquent cho phép bạn tương tác với các bảng của bạn như thể chúng là các đối tượng, tuy nhiên Eloquent không biết các cột thực tế bạn có trên bảng của bạn.

Hãy xem xét đơn giản User model. Chúng tôi muốn mô hình này truy vấn các bản ghi trên bảng users của chúng tôi.

class User extends Eloquent { 

protected $table = 'users'; 

} Điều đó có một mô hình rất đơn giản. Bây giờ, thay vì truy vấn như thế này.

$user = DB::table('user')->find(1); 

Bạn có thể truy vấn như thế này.

$user = User::find(1); 

Eloquent tự sử dụng trình tạo truy vấn của riêng nó nhưng quay trở lại trình tạo truy vấn chuẩn. Điều này có nghĩa là nó có tất cả các phương thức trên trình tạo truy vấn có sẵn cho nó và hơn thế nữa.

Những lợi ích ở đây là:

  • Bạn không cần phải chỉ định tên bảng của bạn trên tất cả các cuộc gọi.
  • Mã đọc tốt hơn rất nhiều, đó là đường cú pháp.
  • Bạn có thể tạo mối quan hệ phức tạp giữa các bảng và sử dụng tải mong muốn.
  • Bạn có thể sử dụng các chức năng như bảo vệ gán hàng loạt và bộ định tuyến/getter.

Tôi chỉ chạm vào Eloquent. Có nhiều hơn thế nữa. Tôi đề nghị bạn hãy xem các tài nguyên sau đây.

For more exact simple example click here

+0

Bạn không trả lời câu hỏi của tôi, tôi luôn sử dụng Mô hình thay vì truy vấn đơn giản như: DB :: table ('user') ... Câu hỏi của tôi là tại sao, khi tôi tạo một mô hình, Laravel mở rộng từ Model và không phải từ Eloquent? – elarib

+0

có chính xác laravel mở rộng đến mô hình đó không phải từ Eloquent.Eloquent ORM đi kèm với Laravel làm cho nó vô cùng dễ dàng để tương tác với một cơ sở dữ liệu –

+1

https://scotch.io/tutorials/a-guide-to-using-eloquent-orm -in-laravel đọc này articale khi bạn có thể xác định hoặc bạn có thể tạo ra mô hình –

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