Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

909
Views
Relación entre dos tablas - Laravel, Inertia, Vuejs

soy nuevo en el tema, tengo dos tablas relacionadas entre si, una para departamentos y otra para usuarios, quiero saber cuantos usuarios hay en cada departamento

DepartmentController.php

 public function index() { return Inertia::render('back/app/departments/index', [ 'filters' => request()->all('visibility', 'status', 'search'), 'departments' => Department::orderBy('name')->get(), 'total_members' => User::where('department_id')->count(), dd(User::where('department_id')->count()), ]); }

Índice.vue

 <td class="flex items-center text-sm leading-5 text-gray-500 px-6 py-4 whitespace-no-wrap"> <span class="font-medium">{{ department.total_members }}</span>&nbsp;{{ $trans('labels.members') }} </td> <td class="px-6 py-4 whitespace-no-wrap text-right text-sm leading-5 font-medium"> <inertia-link :href="route('app:projectdepartment.index', {id: department.id})"> {{ $trans('labels.view-activity') }} </inertia-link> </td>
over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

Si tiene la relación de users configurada en su modelo de Department , puede usar el método withCount() :

 Department::withCount('users')->orderBy('name')->get()

Esto le dará una propiedad de cuenta de users_count en cada departamento.

over 4 years ago · Santiago Trujillo Report

0

Suponiendo que tiene las relaciones definidas en cada modelo como se indicó, también puede definir un elemento de acceso o, como ya se dijo, obtener la cantidad de modelos relacionados mediante withCount o también con loadCount después de recuperar un modelo de departamento individual.

Modelos/Usuario.php

 public function department() { return $this->belongsTo(Department::class, 'department_id'); } public function getActiveUserCountAttribute($value) { // Perform additional logic on the users relationship return $this->users()->where('active',1)->count(); }

Modelos/Departamento.php

 public function users() { return $this->hasMany(User::class); }

Recuerda que uno de los beneficios de withCount es que no carga los modelos relacionados, evitando un problema de n+1. Si usa withCount, no necesitaría el descriptor de acceso definido en el modelo de departamento, pero sí la relación de usuario definida en el departamento.

Tenga en cuenta que también puede usar el método loadCount después de haber recuperado el modelo de departamento, por ejemplo, para una página de presentación individual en lugar de una colección.

// Desde tu método show en tu controlador

 $department = Department::where('name',$request['name'])->first(); $department->loadCount('users');

Para cargar con entusiasmo el atributo 'active_user_count' en cada modelo de departamento, usaría la propiedad $with. Con esto definido, no necesitaría usar withCount o similar en su método de controlador.

// Departamento.php

 // A relationship that should always be loaded with every Department request. protected $with = ['active_user_count']

Documentos de Laravel: https://laravel.com/docs/8.x/eloquent-relationships#counting-related-models

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!