Как получить все пользовательские данные из другой таблицы и включить их в список пользователей в laravel? - PullRequest
0 голосов
/ 03 февраля 2020

Я использую 2 таблицы при отображении моих пользователей в моих пользователях> index.blade

эти 2

Таблица USER

enter image description here

и таблица COLLECTOR_MEMBERS

enter image description here

В результате получается

enter image description here

Теперь моя проблема в том, что я хочу подключиться к другой таблице с именем

Таблица COMMISSIONS

enter image description here

, чтобы добиться этого результат

enter image description here

МОДЕЛИ

КОМИССИЯ Модель

enter image description here

ПОЛЬЗОВАТЕЛЬ

enter image description here

ЧЛЕН КОЛЛЕКТОРА

enter image description here

Функция индекса USER Controller

public function index(Request $request)
{
    $users = User::all();           
    $admins = User::whereHas('roles', function ($q) {
      $q->where('roles.name', '=', 'admin');
    })->get();

    $collectorList = User::whereHas('roles', function ($q) {
      $q->where('roles.name', '=', 'collector');
    })->with('collectorList')->get();

    $borrowers = User::whereHas('roles', function ($q) {
      $q->where('roles.name', '=', 'borrower');
    })->get();

    $userProfile = Auth::user()->id;

    if (Auth::User()->hasRole(['borrower','collector'])){
        return redirect('dashboard/profile/'.$userProfile);
    }

    return view('dashboard.users.index', compact('users','profile'))
            ->with('admins',$admins)
            ->with('borrowers',$borrowers)
            ->with('collectorList',$collectorList);
            // ->with('collectorBorrowers',$collectorBorrowers);
}

Как мне отобразить столбец Commission_amount из таблицы комиссий? сделать мой список таким:

enter image description here

1 Ответ

1 голос
/ 03 февраля 2020

Вы можете использовать функцию суммирования, ваш код должен выглядеть следующим образом.

$collectorList = User::whereHas('roles', function ($q) {
      $q->where('roles.name', '=', 'collector');
    })->with(['collectorCommission' => function($query) {
          $query->sum('commission_amount');
}])->get();

Предполагая, что у вас есть эти отношения в вашей пользовательской модели

public function collectorCommission() [
   return $this->hasMany('App\Commissions', 'user_id');
}

Вы не можете используйте отношение belongsToMany, так как для этого отношения вам понадобится промежуточная таблица во втором аргументе.

Вы должны использовать отношение hasMany, учитывая, что у одного пользователя много комиссий.

...