varios hacer consultas como anidadas laravel laravel-4 eloquent

laravel - hacer - ¿Cuándo usar Eloquent(ORM) sobre Fluent(Query Builder)?



consultas eloquent laravel (2)

Tal vez debido a mi experiencia con Codeigniter, simplemente no me encuentro disfrutando mucho del ORM Eloquent de Laravel 4. Digamos que me gustaría escribir una consulta que ordene una lista de publicaciones por ID, descendiendo, ¿cómo puede Eloquent vencer la claridad de DB::table(''posts'')->orderBy(''id'', ''desc'')->get(); ?

¿Hay alguna buena razón para usar Eloquent sobre Fluent, fue principalmente para unir mesas?


También vine de Codeigniter y esta es mi experiencia: uso Eloquent y Fluent generalmente juntos. Eloquent es una cosa que le permite trabajar muy bien con relaciones, operaciones CRUD, etc. Cuando necesite hacer algunas operaciones SQL, puede agregar fácilmente algunas funciones fluidas

En el ejemplo que mencionaste anteriormente, veo que tienes una tabla de publicaciones. Si tiene un modelo de publicación, lo mismo que se escribe con Eloquent es:

Post::orderBy(''id'', ''desc'')->get();

Así que como lo entiendo si extiendes Eloquent de

Model_name::some_functions

es lo mismo que

DB::table(''table_name'')->some_functions

El verdadero poder viene cuando necesitas crear o actualizar un modelo, o, por ejemplo, obtener comentarios de la publicación. De lo que se convierte fácilmente:

$comments = Post::find($id)->comments;

Entonces, la respuesta es: tienes que usar funciones fluidas para obtener una lista ordenada. Puede usarlos con DB :: table (''publicaciones'') -> orderBy o Post :: orderBy


Usando modelos y Eloquent, también puede escribir funciones personalizadas en su clase de modelo para realizar operaciones comunes como, por ejemplo, generar un par de campos concatenados.

por ejemplo:

<?php class User extends Eloquent { //Standard Relation Function public function posts() { return $this->hasMany(''Post''); } //Custom function public function fullname() { return $this->firstName.'' ''.$this->lastName; } } //Somewhere else in your code, if you need a users full name... $user = User::find(3); $name = $user->fullname();