列出所有与他们注册的驱动程序的计数的用户

问题描述:

我有拖款UserDriveruser可以注册任意数量的驱动程序drivers列出所有与他们注册的驱动程序的计数的用户

在驱动程序表,我有agent_id,我想列出所有users与他们在我的UserController的注册

司机算我想通过代理注册的驱动程序的数量

public function index(Request $request) 
{ 
    $users = User::all(); 

    $registration_centers = RegistrationCenter::all(); 

    $drivers_registered = Driver::where('agent_id' , $agent_id)->count(); //something like this but i don't have agent_id to query with 

    return view('agents', compact('users', 'registration_centers', drivers_registered)); 
} 

Drver型号

<?php 

namespace App; 

use Carbon\Carbon; 
use Illuminate\Database\Eloquent\Model; 
use Illuminate\Database\Eloquent\SoftDeletes; 

class Driver extends Model 
{ 
    use SoftDeletes; 

    protected $fillable = ['agent_id','registration_center','event_name','registration_id','profile_photo','first_name','last_name',]; 

} 

和用户模型

<?php 

namespace App; 

use App\Driver; 
use Laravel\Passport\HasApiTokens; 
use Illuminate\Notifications\Notifiable; 
use Illuminate\Database\Eloquent\SoftDeletes; 
use Illuminate\Foundation\Auth\User as Authenticatable; 

class User extends Authenticatable 
{ 
    use SoftDeletes, HasApiTokens, Notifiable; 

    protected $fillable = ['name', 'email', 'phone_number','password','address_city_village','address_state','image','registration_center','status']; 

    protected $hidden = ['password', 'remember_token','created_at','updated_at','deleted_at']; 

    protected $dates = ['deleted_at']; 
} 

我婉DISPLY所有users与驱动程序的列表视图中每个用户的计数

<ul> 
    @foreach (users as user) 
    <li>User: {{user->name}} 
     Total Drivers: {{$user->drivers_count}} 
     </li> 
    @endforeach 
</ul> 

谢谢

+2

份额'驱动程序和用户模型? – C2486

+0

非常感谢你的时间,我已更新我的帖子 –

+1

我建议使用:https://laravel.com/docs/5.4/eloquent-relationships#one-to-many – C2486

假设agent_id是将用户与驱动程序相关联的关键......您非常接近我认为您所要求的内容。

然而,在UserController中的索引方法的第一行,我将更新

$users = User::all(); 

$users = User::withCount('drivers')->all(); 

,并添加驱动程序关系到用户模式。

因此,与加关系的用户模型现在将

class User extends Authenticatable 
{ 
    use SoftDeletes, HasApiTokens, Notifiable; 

    protected $fillable = ['name', 'email', 'phone_number','password','address_city_village','address_state','image','registration_center','status']; 

    protected $hidden = ['password', 'remember_token','created_at','updated_at','deleted_at']; 

    protected $dates = ['deleted_at']; 

    public function drivers(){ 
     $this->hasMany('App\Driver', 'agent_id'); 
    } 

} 

您可以从您的控制器中删除下面的一行但是这取决于你...

$drivers_registered = Driver::where('agent_id' , $agent_id)->count(); 
+0

谢谢你的时间,真的很感激它 –

示例AgentController:

public function index(Request $request, $agenId){ 
     $users = User::all(); 
     $registration_centers = RegistrationCenter::all(); 
     $drivers_registered = Driver::where('agent_id' , $agenId)->count(); 
     return view('agents', compact('users', 'registration_centers', 
     'drivers_registered')); 
    } 

    this blade 
    <p> {{ $drivers_registered }} </p> 
+0

谢谢你的时间,在这里我没有通过任何'agent_id',我想在列表视图中显示所有'代理'与每个代理注册的驱动程序的计数 –