2015-07-13 14 views
8

Quindi, io sono confuso con questo: Nella documentazione ufficiale di laravel, dicono:La differenza tra un modello Eloquent e un modello?

L'Eloquente ORM incluso con laravel fornisce una bella, semplice implementazione ActiveRecord per lavorare con il database. Ogni tabella di database ha un "Modello" corrispondente che viene utilizzato per interagire con con quella tabella.

Ok, util qui è tutto fantastico, ho capito!

Così ho fare una migrazione per creare un database: php artigianale make: migrazione create_items_table --create = "elementi"

Grande fin qui troppo :)

Quindi teoricamente parlando, quando sarò fare: php artigianale fanno: modello dell'articolo, laravel creerà una classe PHP (che viene utilizzato per interagire con tabella degli elementi):

class Item extends Eloquent { 

    ... 

    } 

Ma, a Rea l mondo, quando faccio: php artigianale Costruttore: Modello Item, laravel crea classe PHP (che viene utilizzato per interagire con la tabella articoli) ::

class Item extends Model { 

    ... 

    } 

Così Perché modello e non Eloquente ?? Mi manca sth? E qual è la differenza tra Modello Eloquent e Modello.

E se c'è una differenza, quando dovrei usare Eloquent e quando Model ...?

Grazie ^^

risposta

7

ho trovato la soluzione per la mia domanda ...

cui normalmente è necessario aggiungere un alias al tuo config/app.php

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

E quando si crea un modello, laravel sarà use Eloquent; invece di use Illuminate\Database\Eloquent\Model; questo il motivo per cui penso, una persona può utilizzare modello, quando gli altri possono utilizzare Eloquente, è solo una questione di dare un senso significato allo spazio dei nomi: 3

+1

ya destra @elarib usando alias puoi anche usare.thax un sacco –

+0

E ho appena notato, per impostazione predefinita, estende Eloquent è in Laravel 4, mentre Laravel 5 si estende Modello di default ... – elarib

+1

yap 5.1 fa anche estensione Modello di default.non è necessario aggiungere questo. –

1

Eloquente è il nome dato alla (object-relational mapping) ORM che le navi con laravel. Eloquent ti consente di interagire con le tue tabelle come se fossero oggetti, tuttavia Eloquent non è a conoscenza delle colonne effettive che hai sul tuo tavolo.

Consideriamo il semplice User model. Vogliamo che questo modello interroghi i record sulla nostra tabella users.

class User extends Eloquent { 

protected $table = 'users'; 

} Che ci sia un modello molto semplice. Ora, invece di interrogare in questo modo.

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

È possibile eseguire una query come questa.

$user = User::find(1); 

Eloquent utilizza il proprio generatore di query ma ricade sul generatore di query standard. Ciò significa che ha a disposizione tutti i metodi disponibili sul generatore di query e altro ancora.

I vantaggi qui sono:

  • Non è necessario specificare il nome del tavolo su ogni chiamata.
  • Il codice si legge molto meglio, è zucchero sintattico.
  • È possibile creare relazioni complesse tra le tabelle e utilizzare il caricamento ansioso.
  • È possibile utilizzare funzionalità come protezione di assegnazione di massa e setter/getter.

Ho toccato solo Eloquent. C'è molto di più. Ti suggerisco di dare un'occhiata alle seguenti risorse.

For more exact simple example click here

+0

Non hai risposto alla mia domanda, uso sempre Model invece di query semplici come: DB :: table ('utente') ... La mia domanda era: perché quando creo un modello, Laravel si estende dal modello e non da Eloquente? – elarib

+0

sì esattamente laravel si estende al modello non di Eloquent. L'ORM Eloquent che viene fornito con Laravel rende incredibilmente facile interagire con un database –

+1

https://scotch.io/tutorials/a-guide-to-using-eloquent-orm -in-laravel leggi questo articolo quando puoi definire o puoi creare il modello –