Me dan una mano con una query en Eloquent con laravel :(

pa3lo022

Gamma
Verificación en dos pasos desactivada
Verificado por Whatsapp
¡Usuario con pocos negocios!
Desde
24 Nov 2014
Mensajes
335
Hola a todos, y gracias de antemano, estoy con laravel y tengo una funcionalidad que me esta volviendo loco.
Tengo un listado de servicios en una tabla y en otra tabla tengo el listado de comentarios de cada servicio, necesito poner en el listado de servicios (donde se muestran todos los servicios) la cantidad de comentarios que tuvieron cada uno, pero no puedo, bah no se como diferenciar cada uno de los servicios.

Muchas gracias

saludos
 

Fedde157

Gamma
Verificación en dos pasos desactivada
¡Usuario con pocos negocios!
Desde
7 Dic 2015
Mensajes
257
cada comentario debe estar asociado a un servicio a traves de un PK, simplemente haces un count a cada servicio por medio de su id
 

pa3lo022

Gamma
Verificación en dos pasos desactivada
Verificado por Whatsapp
¡Usuario con pocos negocios!
Desde
24 Nov 2014
Mensajes
335
cada comentario debe estar asociado a un servicio a traves de un PK, simplemente haces un count a cada servicio por medio de su id
Tiene una relacion la tabla de servicios con la de los comentarios. Pero el problema es que no puedo diferenciar cada uno de los servicios con un count()
 

Fedde157

Gamma
Verificación en dos pasos desactivada
¡Usuario con pocos negocios!
Desde
7 Dic 2015
Mensajes
257
Tiene una relacion la tabla de servicios con la de los comentarios. Pero el problema es que no puedo diferenciar cada uno de los servicios con un count()

quieres una lista de todos los servicios y al costado sus comentarios?
 

pa3lo022

Gamma
Verificación en dos pasos desactivada
Verificado por Whatsapp
¡Usuario con pocos negocios!
Desde
24 Nov 2014
Mensajes
335
quieres una lista de todos los servicios y al costado sus comentarios?
Claro yo tengo el listado de servicios, y ahi donde dice feedback deberia contarme cuantos feedback tuvo cada servicio, no se si me explico?
2021-04-06_19h43_25.png
 

cholemon

Gamma
Verificación en dos pasos desactivada
Verificado por Whatsapp
¡Usuario con pocos negocios!
Desde
12 Mar 2017
Mensajes
184
en sql serial algo asi:

select id_servicio, nombre_servicio, ( SELECT COUNT(*) FROM comentarios_servicios WHERE fk_id_servicio = servicios.id_servicio ) as cantidad_comentarios from servicios

algo asi..... lo escribí directamente aqui en la caja de comentarios....

saludos.!
 

pa3lo022

Gamma
Verificación en dos pasos desactivada
Verificado por Whatsapp
¡Usuario con pocos negocios!
Desde
24 Nov 2014
Mensajes
335
en sql serial algo asi:

select id_servicio, nombre_servicio, ( SELECT COUNT(*) FROM comentarios_servicios WHERE fk_id_servicio = servicios.id_servicio ) as cantidad_comentarios from servicios

algo asi..... lo escribí directamente aqui en la caja de comentarios....

saludos.!
si si esta bien, te entendi. Estoy pensando que deberia ponerle un foreach a esa consulta para que me cuente cada uno de los servicio del listado.... podria funcionar :)

lo voy a probar, muchas gracias
 

Zarat

Delta
Programador
Verificación en dos pasos activada
¡Ha verificado su Paypal!
Desde
28 Mar 2014
Mensajes
579
Si puedes mostrar tus modelos, fácilmente te podriamos asesorar mejor.

Suponiendo que tienes tus relaciones correctamente podrías usar el método withCount() de eloquent:

PHP:
$services = Service::withCount('comments')->get();
// Loop de los servicios
foreach ($services as $service) {
    // Cantidad de comentarios de cada servicio
    echo $service->comments_count;
}

Saludos y suerte 🥳
 

cholemon

Gamma
Verificación en dos pasos desactivada
Verificado por Whatsapp
¡Usuario con pocos negocios!
Desde
12 Mar 2017
Mensajes
184
con la query que te compartí no es necesario usar un foreach..... porque internamente el SELECT hace un foreach..

Por eso la query que escribí te lista el servicio con la cantidad de comentarios correspondientes...
 

cholemon

Gamma
Verificación en dos pasos desactivada
Verificado por Whatsapp
¡Usuario con pocos negocios!
Desde
12 Mar 2017
Mensajes
184
Acá te hice el ejemplo en SQL Server....


1617750322283.png
 

Turbo

Gamma
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
¡Usuario con pocos negocios!
Desde
7 Abr 2013
Mensajes
433
¿Las quieres mostrar en una vista? Es bastente sencillo gracias a laravel, no hay que ponerse a pensar mucho.
Yo aprendí con este sujeto: https://bluuweb.github.io/tutorial-laravel/

public function funcionservicio(){

$servicios = App\service::all();
$comentarios = App\comment::all();
return view('service', compact('servicios','comentarios'));
}

Luego con un for imprimes en la vista

Si hay relación, también hay otras formas de hacerlo.
 

davidrod

Delta
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
¡Usuario con pocos negocios!
Desde
31 Dic 2020
Mensajes
536
Tengo una seccion de categorias, subcategorias y servicios, asi lo solucione:

PHP:
  $servicesCount = $capsule->table('discounts_services')
    ->join('discounts_categories','discounts_categories.categoriesId','=','discounts_services.categoriesId')
    ->select(Capsule::connection()->raw('count(discounts_services.servicesId) as totalServices'))
    ->OrderBy('discounts_categories.categoriesOrder')
    ->groupBy('discounts_services.categoriesId')
    ->get();

Y asi, puedes usar en tu view:

PHP:
  $servicesCount[$categoriesId]->totalServices

Espero te sirva.
 

Crea una cuenta o accede para comentar

Debes ser un miembro para poder comentar

Crear cuenta

Crea una cuenta en nuestra comunidad

Acceder

¿Ya tienes una cuenta? Accede aquí


Arriba