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

pa3lo022 Seguir

Gamma
Verificación en dos pasos desactivada
Verificado por Whatsapp
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
24 Nov 2014
Mensajes
376
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
Verificado por Whatsapp
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
7 Dic 2015
Mensajes
356
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! ¡Utiliza siempre saldo de Forobeta!
Desde
24 Nov 2014
Mensajes
376
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
Verificado por Whatsapp
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
7 Dic 2015
Mensajes
356
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! ¡Utiliza siempre saldo de Forobeta!
Desde
24 Nov 2014
Mensajes
376
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 activada
Verificado por Whatsapp
Desde
12 Mar 2017
Mensajes
337
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! ¡Utiliza siempre saldo de Forobeta!
Desde
24 Nov 2014
Mensajes
376
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
588
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 activada
Verificado por Whatsapp
Desde
12 Mar 2017
Mensajes
337
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...
 

Turbo

Delta
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
7 Abr 2013
Mensajes
582
¿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! ¡Utiliza siempre saldo de Forobeta!
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.
 

¡Regístrate y comienza a ganar!

Beneficios

  • Gana dinero por participar
  • Gana dinero por recomendarnos
  • Descubre ofertas de empleo diariamente
  • Negocios seguros
  • ¡Información premium y más!

Acceder

¿Ya tienes una cuenta? Accede aquí

Arriba