Consulta
Comprar curso

8. Consulta

En este tema aprenderás a configurar la consulta para tu tabla utilizando Laravel Livewire Tables. Te enseñaremos cómo agregar filtros y ordenamiento a tus consultas de manera eficiente y fácil.


9 comentarios

Inicia sesión para comentar

Comentarios:

  • Victor Arana Flores

    Victor Arana Flores hace 1 año Destacado

    El paquete Laravel Livewire Tables te permite realizar consultas de manera eficiente y sencilla. Por defecto, el paquete se unirá a cualquier tabla de relaciones que pueda, lo que significa que también cargará cualquier relación que tenga el modelo. Si deseas cargar todas las relaciones de una vez, puedes encadenar el método eagerLoadRelations() en la columna o llamar al método setEagerLoadAllRelationsEnabled() en la configuración del componente.

    Ten en cuenta que, actualmente, este paquete solo admite modelos Eloquent. Pero tienes dos formas de conectar tu modelo: utilizando la propiedad del modelo o implementando el método builder.

    Si tienes una tabla simple y no necesitas unirte a ninguna otra tabla ni crear alias, puedes utilizar la propiedad del modelo, como se muestra en el siguiente ejemplo:

    protected $model = User::class;

    Por otro lado, si deseas tener más control sobre la consulta, puedes implementar el método builder en tu componente. De esta manera, puedes realizar consultas más complejas y personalizadas, tal como se muestra en el siguiente ejemplo:

    public function builder(): Builder
    {
        return User::query()
            ->with() // Eager load anything
            ->join() // Join some tables
            ->select(); // Select some things
    }

    Recuerda que tu componente debe implementar al menos uno de estos métodos, de lo contrario, se lanzará una excepción. Espero que esta información te haya sido útil. ¡No dudes en preguntarme si necesitas más ayuda!

  • Víctor Hugo Sánchez Quijada

    Víctor Hugo Sánchez Quijada hace 4 meses

    ¿Cómo puedo hacer para que el datatable Livewire cambie de forma dinámica utilizando un elemento select que se encuentra en otro componente Livewire? 

    Inicialmente la variable la inyecto por el método mount pero posteriormente si cambia el select, ya no cambia el datatable. ¿Qué puedo hacer? Envío parte de mi código. 

     

    public function mount( $selectSemestre) {

    $this->semestreSeleccionado = $selectSemestre;

    }

    public function columns(): array

    {

    }

    public function builder(): Builder

    {

            return Plantillas::query()

                →where('semestre', '=', $this->semestreSeleccionado)

                ->select('grupo', 'semestre');


    }

     

     

    /// Esta es la parte de la vista

    <form action="">

    <select wire:model="semestreSeleccionado" class="form-select" name="semestre" id="semestre">

    <option value="0">Selecciona semestre</option>

    @isset($selectSemestre)

        @foreach ($selectSemestre as $llave => $label)

             <option value="{{$llave}}">{{$label}}</option>

       @endforeach

    @endisset

    </select>

    </form>

     

    @livewire('profesores.listado-ordinarios-table', ['semestreSeleccionado' => $semestreSeleccionado])

  • Jorge Rodríguez Comesaña

    Jorge Rodríguez Comesaña hace 6 meses

    Tengo una duda. Cree una vista que muestra los posts de un usuario.

    En el método Builder filtro los posts a mostrar según el usuario activo.

    Luego a la tabla le agregue un botón que me muestra un post.

    Aquí todo bien. El tema esta que en la url me aparecer el id del post que estoy viendo, y si cambio ese id por el post de otro usuario también me lo muestra.

    Como es la mejor manera de hacer que el usuario activo solo pueda ver sus propios posts.

    Por medio de los middleware o hay otra forma. Lo he intentado con Observers, pero no tiene un método retrieving, solo tiene el método retrieved que no vale, porque ya hizo la consulta.

     

    Saludos y gracias. Muy buenos los cursos.

    • Victor Arana Flores hace 6 meses

      Hola Jorge, lo puedes hacer de varias formas. Con Middlewares, gates, policies, query scopes, depende de como quieras organizarte.

      Lamentablemente este curso se aleja un poco de tu duda, pero en cualquiera de mis cursos practicos ya sea de paga o gratuita lo enseño. 

    • Jorge Rodríguez Comesaña hace 6 meses

      Hola Victor, gracias por tu respuesta. Tengo varios cursos comprados y vistos. Pero no recuerdo a ver visto es tema para livewire. Si lo tengo claro usando controladores. Puedes sugerirme en que curso puedo verlo. Me da lo mismo que sean de pago o gratis. Gracias

    • Victor Arana Flores hace 6 meses

      Hola Jorge. Livewire crea componentes dinamicos, los mismos que debes incluirlos en una vista, los mismos que deben estar siendo llamados desde un controlador, y justo ahi es donde debes agregar la logica necesaria para prohibir el acceso a los usuarios no autorizados.

    • Jorge Rodríguez Comesaña hace 6 meses

      Gracias Víctor. Que tonto, no me di cuenta que el botón estaba llamando a una vista de Blade, la cual es manejada por un controlado, y si modifica el id en la ruta lo mismo estas cambiando la ruta, la cual va a pasar por el controlador. Estaba convencido que todo lo estaba controlando Livewire y no es correcto en cuanto pulsa el botón sales de la vista de livewire y te pasa a Blade. Vale muchas gracias. Es un poco complicado coger bien la lógica de Laravel, pero una vez que la pillas es una pasada. Ya que estoy te comento algo, acabo de terminar el curso de TDD, me gusto mucho, pero me da la impresión que lo dejaste a medio terminar, o lo noto muy poder, a título personal me gustaría algo mas avanzado, mas profundo. Muchas gracias y espero más curso. 

  • Edgar Suarez Champa

    Edgar Suarez Champa hace 8 meses

    Buenas noches, llegué a crear mi componente y me muestra los datos de mi base de datos pero no me muestra el buscador, ni la paginación de data table, use “npm run build” desde consola pero nada, qué podría estar fallando. Desde ya muchas gracias.

  • Edgar Suarez Champa

    Edgar Suarez Champa hace 8 meses

    Buenas noches, llegué a crear mi componente y me muestra los datos de mi base de datos pero no me muestra el buscador, ni la paginación de data table, use “npm run build” desde consola pero nada, qué podría estar fallando. Desde ya muchas gracias.

  • Edgar Suarez Champa

    Edgar Suarez Champa hace 8 meses

    Buenas noches, llegué a crear mi componente y me muestra los datos de mi base de datos pero no me muestra el buscador, ni la paginación de data table, use “npm run build” desde consola pero nada, qué podría estar fallando. Desde ya muchas gracias.

    • Victor Arana Flores hace 8 meses

      Hola Edgar, te recomendaria que regreses al capitulo 6 donde explico como instalar el paquete, y que te asegures que la configuracion este igual que en el video.

  • Alinder Javier Guerrero Chacon

    Alinder Javier Guerrero Chacon hace 1 año

    Hola Victor hice el curso de Notificaciones con laravel y quisiera saber en la tabla yo tengo un campo que se llama sender_id y quisiera mostrar el nombre de la persona que envia, pero nose como hacerlo con la consulta

    La consulta que intente es:

    Pero al cambiar el “sender_id” por “user” me sale error “Que no tengo el campo user en la tabla mensajes"

    • Victor Arana Flores hace 1 año

      Saludos Alinder,

      La sección de comentarios en las lecciones está destinada a aclarar conceptos relacionados con la explicación de la clase en cuestión. Sin embargo, me temo que tu consulta involucra un proyecto personal que no puede resolverse mediante este medio.

  • Víctor Hugo Sánchez Quijada

    Víctor Hugo Sánchez Quijada hace 1 año

    En lugar de usar modelo Eloquent quiero utilizar un procedimiento almacenado de MySQL, pero me marca error: Return value must be of type Illuminate\Database\Eloquent\Builder, Illuminate\Support\Collection returned

    Mi código: 

    public function builder(): Builder {

           $datos = DB::select('CALL sp_prueba_plantillas()');

           return collect($datos);

    }

    ¿Cómo lo puedo solucionar?

    • Victor Arana Flores hace 1 año

      Hola Victor, el paquete trabaja con eloquent, por lo que si quieres usar el paquete, debes encontrar la forma de hacer la consulta con eloquent.

    • Víctor Hugo Sánchez Quijada hace 1 año

      Muchas gracias por su respuesta profesor. Entonces pasaré mis procedimientos almacenados a formato de consulta Eloquent

  • Quotech

    Quotech hace 1 año

    hice todo exactamente igual pero me esta dando el siguiente error Call to a member function addEagerConstraints() on null