Advertisement
Al0rse

Query comparation

Nov 24th, 2016
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 1.57 KB | None | 0 0
  1. <?php
  2.  
  3.  
  4. /*
  5.     En este primer ejemplo se muestra como obtener los Trips asociados a $countryId, primero voy al modelo Country y de ahí saco trips mediante una relación.
  6.     Como se puede ver en el ´return´, lo que se retorna es la posición trips del objeto Country
  7.     Esta no es la manera correcta, ya que el Modelo base debería ser Trips y no Country.
  8. */
  9.  
  10.     $country = Country::where('id', $countryId)
  11.         ->with(['trips' => function ($query) use ($fields) {
  12.             $query->select($fields)->where('cached_is_active', '1')->where('is_active', '1')
  13.                 ->where('locale_id', App::getLocale())
  14.                 ->get();
  15.         }])
  16.         ->get();
  17.  
  18.         return $country->trips;
  19.  
  20.  
  21. /*
  22.     En este segundo ejemplo estoy obteniendo un objeto de tipo ´Trip´ apartir del modelo definido en el constructor de la clase y ya que necesito obtener los trips asociados a un país, agrego un ´whereHas´ que me permite hacer una condición mediante un relationship, en este caso con el modelo countryTripRelations
  23. */
  24.  
  25.     // $this->model = 'Viventura\Models\Trip'
  26.     $trips = $this->model->select($fields)->where('cached_is_active', '1')->where('is_active', '1')
  27.         ->where('locale_id', App::getLocale())
  28.         ->whereHas('countryTripRelations', function($q) use ($countryId){
  29.             $q->where('country_id', $countryId);
  30.         })
  31.         ->get();
  32.  
  33.         return $trips;
  34.  
  35. /*
  36.     En ambos casos se obtiene el mismo resultado, solo que en el segundo lo estoy haciendo desde el objeto correspondiente y sin la necesidad de usar un join.
  37. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement