Mostrando entradas con la etiqueta Query Builder. Mostrar todas las entradas
Mostrando entradas con la etiqueta Query Builder. Mostrar todas las entradas

Query Builder: pluck (ideal para crear array asociativo)

En el método del controller:
// usamos pluck en vez de all() para que solo coja el campo q se especifique (y no todos)
// de esta manera lo conv en array asociativo para cuando se pasa a la view (viene muy bien para rellenar los combos)
$categories = Category::pluck('name','id');
Así en la view solo hay que poner luego:
{!! Form::select('category_id', $categories, null, ['class'=>'form-control']) !!}

Generar una query dinámicamente

$orders = Order::query()->where('user_id', auth()->user()->id);
// si se ha pasado por url el parámetro status
if (request()->status) {
      $orders->where('status', request()->status);
}
$orders = $orders->get(); // generar la colección

Crear los where de una query dinámicamente

$arrHist = DB::table('historial')
                ->join('cineastas', 'cineastas.id', '=', 'historial.id_cineasta')
                ->join('peliculas', 'peliculas.id', '=', 'historial.id_pelicula')
                ->join('categorias', 'categorias.id', '=', 'historial.id_categoria')
                ->select('peliculas.titulo as titPelicula', 'cineastas.nombre as nomCineasta', 'categorias.nombre as nomCateg','historial.anno','premiado','historial.id')
                ->orderby('titPelicula');

if (isset($anno)) {
$arrHist = $arrHist->where("historial.anno", $anno);
}
if (isset($id_categ)) {
$arrHist = $arrHist->where("historial.id_categoria", $id_categ);
}

$arrHist = $arrHist->get();

Log para mostrar la query que se genera

DB::enableQueryLog();

$arrHist = DB::table('hist...

dd(DB::getQueryLog());

Query Builder

Ejemplos:
$sliders = Sliders::orderBy('link_slider')->limit(3)->get();

$sliders = Sliders::orderBy('link_slider')->paginate(3);

$peliculas = Pelicula::orderBy('titulo', 'asc')->get();

$sliders = Sliders::orderByRaw('RAND()')->limit(3)->get();

$arrAux = Youtube::where('id', $request->id_pelicula)->get();

   $arrGarci = Garci::select('*')
            ->join('pel_youtube', 'pel_youtube.id', '=', 'videos_garci.id_pelicula')
            ->get();return view('peliculas.list',compact('peliculas'));


Luego en la view para recorrerlo:
@foreach ($sliders as $slider)
   {{ $slider->xxx }}
@endforeach

Si hace un paginate en la view luego tienes que poner:
{{ $sliders->links() }}

Para sacar datos referenciales a otra tabla:
$arrGarci = Garci::select('nom_pel_youtube','videos_garci.*')
            ->join('pel_youtube', 'pel_youtube.id', '=', 'videos_garci.id_pelicula')
            ->orderby('nom_pel_youtube')
            ->paginate();


        foreach ($arrGarci as $clave=>$valor) {
            $arrAux = artYoutube::select('nom_art_youtube')->where('id', $valor->id_director)->get();
            $arrGarci[$clave]->nom_director = $arrAux[0]->nom_art_youtube;
            $arrAux = artYoutube::select('nom_art_youtube')->where('id', $valor->id_actor1)->get();
            $arrGarci[$clave]->nom_actor1 = $arrAux[0]->nom_art_youtube;
            $arrAux = artYoutube::select('nom_art_youtube')->where('id', $valor->id_actor2)->get();
            $arrGarci[$clave]->nom_actor2 = $arrAux[0]->nom_art_youtube;
            if ($valor->id_actor3 !=0) {
                $arrAux = artYoutube::select('nom_art_youtube')->where('id', $valor->id_actor3)->get();
                $arrGarci[$clave]->nom_actor3 = $arrAux[0]->nom_art_youtube;
            }
        }