Adquiere este curso para tener acceso a todas las lecciones
Comprar curso11. Relaciones
En este tema aprenderás a trabajar con columnas de relaciones utilizando Laravel Livewire Tables. Te mostraremos cómo definir y configurar tus columnas de relaciones para que funcionen correctamente.
4 comentarios
Inicia sesión para comentar
Comentarios:
-
Victor Arana Flores hace 1 año Destacado
Laravel Livewire Tables admite relaciones hasOne, belongsTo y morphOne fuera de la caja para mostrar, ordenar y buscar. El componente unirá automáticamente las tablas necesarias para que puedas llamar a estas relaciones con facilidad.
Para llamar a estas relaciones, simplemente usa la cadena de notación de puntos de la relación como el nombre del campo en tu columna. Por ejemplo, si tienes un modelo User que tiene una relación hasOne con el modelo Address, puedes llamar a la columna "Address" de la siguiente manera:
protected $model = User::class; // ... public function columns(): array { return [ // Looks for the address column on the address relationship of User. // $user->address->address Column::make('Address', 'address.address'), // ... ]; }
De manera similar, si tu modelo Address tiene una relación hasOne con el modelo Group, y el modelo Group tiene una relación belongsTo con el modelo City, puedes llamar a las columnas "Address Group" y "Group City" de la siguiente manera:
protected $model = User::class; // ... public function columns(): array { return [ // Looks for $user->address->group->name Column::make('Address Group', 'address.group.name'), // Looks for $user->address->group->city->name Column::make('Group City', 'address.group.city.name'), // ... ]; }
De esta manera, puedes mostrar y ordenar fácilmente los datos de tus relaciones en tus tablas de Laravel Livewire. Espero que esta información te haya sido útil. ¡No dudes en preguntarme si necesitas más ayuda!
-
Antonio Lanas hace 11 meses
Es posible tener una tabla de usuarios en la que aparezca una columna con los roles de cada usuario (usando spatie/laravel and permission)?
la columna entonces como sería? Column::make("Roles", "user.roles[]"), obviamente esto no funciona. No sé si se puede hacer, creo que no
-
Antonio Lanas hace 11 meses
Column::make("Roles")
->label(fn($row) => $row->roles->pluck('name')->join(', ')),
creo que seria algo asi :)
-
Victor Arana Flores hace 11 meses
Hola antonio, si se puede, te oriendo masomenos como lo harías.
En tu tabla recupera el modelo User a traves del metodo builder y cargas la relación con Role.public function builder(): Builder { return User::query() ->with('roles');
Ahora para mostrar la columna haz esto
Column::make('Role') ->label( function ($row) { // return $row->roles } ),
Cuando usas label, no va intentar encontrar la columna Role, sino que va usar la información ya cargada para hacer algo personalizado.
Pdta:
En el caso de que no estes mostrando el campo id en tu tabla, y al necesitarse esa campo para recuperar los roles, tendrías que agregarlo a la consulta de esta manera
public function configure(): void { $this->setPrimaryKey('id'); $this->setAdditionalSelects(['users.id']); }
-
Antonio Lanas hace 11 meses
Muchas gracias amigo, voy a probarlo
-
-
Rodrigo Rojas Ruiz hace 1 año
Hola Victor, este paquete te permite usar las funciones del modelo, como por ejemplo una que es muy usada para agrupar el nombre y apellidos.
public function getFullName() {return $this->nombres.' '. $this->apellido_paterno.' '. $this->apellido_materno;
}
saludos.
-
Diego Mendoza hace 1 año
Buenas tardes, excelente curso. Lo estoy haciendo paso a paso junto a los videos, pero me surgió una curiosidad, se puede concatenar campos?, por ejemplo tengo una tabla con el campo NOMBRES y otro campo APELLIDOS. ¿ Se los podría concatenar en una sola columna de la tabla tipo APELLIDOS Y NOMBRES?. muchas gracias.
-
Victor Arana Flores hace 1 año
Hola Diego, claro.
En el video 19, cuando se hable de formatting, podrás ver una forma de hacerlo.
-