2015-07-13 16 views
8

Tak, jestem mylić z tym: W oficjalnej dokumentacji laravel jest, mówią:Różnica między wymownym modelem a modelem?

wymownym ORM dołączone laravel zapewnia piękny, prosty realizację ActiveRecord do pracy z bazą danych. Każda tabela bazy danych ma odpowiedni "Model", który jest używany do interakcji z tą tabelą.

Ok, wszystko tutaj jest świetne, rozumiem!

więc dokonać migracji do tworzenia bazy danych: php rzemieślnik Producent: migracja create_items_table --create = „przedmioty”

Wielką aż tu też :)

Więc teoretycznie rzecz biorąc, kiedy będę Marka: php rzemieślnik zrobić: model Element, laravel utworzy klasę php (który jest używany do interakcji z przedmiotami tabeli):

class Item extends Eloquent { 

    ... 

    } 

Ale w rea l świat, kiedy zrobić: php rzemieślnik zrobić: Element modelu, laravel tworzy klasę PHP (który jest używany do interakcji z przedmiotami tabeli) ::

class Item extends Model { 

    ... 

    } 

Dlaczego więc model i nie Eloquent ?? Czy brakuje mi czegoś? I jaka jest różnica między wymownym modelem a modelem.

A jeśli jest jakaś różnica, kiedy powinienem używać Eumquent i kiedy Model ...?

Dziękuję ^^

Odpowiedz

7

Znalazłem rozwiązanie mojego pytania ...

Więc Zwykle trzeba dodać alias do config/app.php

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

I podczas tworzenia modelu, laravel będzie use Eloquent; zamiast use Illuminate\Database\Eloquent\Model; tym, dlaczego myślę, niektóre osoby mogą korzystać z modelu, gdy inne mogą korzystać wymowny, że to tylko kwestia dają poczucie znaczenia przestrzeni nazw: 3

+1

Tak, to dobrze @elarib używając aliasów, które możesz również użyć.htak dużo –

+0

I właśnie zauważyłem, domyślnie, rozszerza Eloquent jest w Laravel 4, podczas gdy Laravel 5 rozszerza Model domyślnie ... – elarib

+1

yap 5.1 również domyślnie rozszerza Model. Nie musisz go dodawać. –

1

wymowny jest nazwa nadana ORM (mapowanie obiektowo-relacyjne), że statki z laravel. Eloquent pozwala ci wchodzić w interakcje z twoimi stołami tak, jakby były obiektami, jednak Eloquent nie zdaje sobie sprawy z faktycznych kolumn, które masz na swoim stole.

Rozważmy prosty User model. Chcemy, aby ten model wysyłał zapytania do naszych tabel users.

class User extends Eloquent { 

protected $table = 'users'; 

} To jest bardzo prosty model. Teraz zamiast pytać w ten sposób.

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

Możesz zapytać w ten sposób. Sam

$user = User::find(1); 

Eloquent używa własnego konstruktora zapytań, ale nie powróci do standardowego konstruktora zapytań. Oznacza to, że ma dostęp do wszystkich metod dostępnych w narzędziu do tworzenia zapytań i innych.

Tutejsze korzyści to:

  • Nie musisz określić swoją nazwę tabeli na każde wezwanie.
  • Kod czyta o wiele lepiej, jest to syntaktyczny cukier.
  • Możesz tworzyć złożone relacje między tabelami i korzystać z szybkiego ładowania.
  • Można skorzystać z funkcji takich jak ochrona przydziału masy i seter/getter.

Dotykałem tylko Eloquenta. Jest o wiele więcej. Proponuję przejrzeć następujące zasoby.

For more exact simple example click here

+0

Nie odpowiedziałeś na moje pytanie, zawsze używam Modelu zamiast zwykłego zapytania typu: DB :: table ('user') ... Moje pytanie brzmiało: dlaczego, kiedy tworzę model, Laravel rozciąga się od Modelu, a nie od Wymowne? – elarib

+0

tak dokładnie laravel rozciąga się na model, który nie jest z Eloquent. Wymowna ORM, która jest dostarczana z Laravel, sprawia, że ​​niezwykle łatwo wchodzi się w interakcję z bazą danych –

+1

https://scotch.io/tutorials/a-guide-to-using-eloquent-orm -in-laravel przeczytaj ten artykuł, kiedy możesz zdefiniować lub możesz stworzyć model –

Powiązane problemy