Diferencia entre Elocuente\Model::get() y todos()

¿Cuál es la diferencia entre los usos User::all() y User::get() en Elocuente?

Sobre Laravel API solo se describe all() en Eloquent\Model.
Tal vez get() se describe en Eloquent\Builder.

2 Kommentare

  1. 68

    User::all() y User::get() va a hacer exactamente lo mismo.

    all() es un método estático en la Eloquent\Model. Todo lo que hace es crear un nuevo objeto de consulta y llame a get() en él. Con all(), no se puede modificar la consulta a cabo en todos (excepto que usted puede elegir las columnas para seleccionar pasando como parámetros).

    get() es un método en el Eloquent\Builder objeto. Si necesita modificar la consulta, tales como la adición de una cláusula where, entonces usted tiene que utilizar get(). Por ejemplo, User::where('name', 'David')->get();.

  2. 6

    De aclarar por qué esto funciona, es porque no es un método mágico en la clase del Modelo que se va a tomar ninguna llamada estática que no está definido, crear una instancia, a continuación, llame al método en la instancia para usted.

    Se puede ver en el código fuente aquí: https://github.com/laravel/framework/blob/5.6/src/Illuminate/Database/Eloquent/Model.php (línea de 1580)

    Esto también se explica en este Laracast episodio: https://laracasts.com/series/advanced-eloquent/episodes/3 (requiere Suscripción)

    Yo también estaba desconcertado cuando llegué por primera vez a través de este, y no podía encontrar get() como un método estático. Pero entonces me acordé de la Laracast episodio que me ayudó a conectar los puntos.

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea