Как показать пользователям этого отдела c? - PullRequest
2 голосов
/ 21 февраля 2020

У меня есть функция, которая показывает отдел в виде дерева, он проверяет наличие узла root и затем проверяет, есть ли у этого отдела дочерний элемент. Когда я щелкаю по отделу, он должен перенаправить меня на другую страницу, которая показывает пользователям этого отдел, на который нажали. Я попытался написать этот код, и он показывает мне всех пользователей, но я хочу только пользователей этого отдела

DepartmentController. php

<?php

namespace App\Http\Controllers\Admin;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use  App\Department;
use  App\User;
use Illuminate\Support\Facades\DB;

class DepartmentController extends Controller
{  

  public function usersdep(){
    //THIS IS THE ADDED CODE   

     $users =  DB::table('users')
    ->join('departments', 'users.department', '=', 'departments.id')
    ->select('users.id','users.lastname','users.name as username','departments.name')->get();
    return view('admin.page-users')->with('users', $users);
    //ADDED CODE
  } 



  public function treeView(){       
    $departments =  Department::where('parent', '=', 0)->get();   
    $tree='<ul id="browser" class="filetree">';
    foreach ($departments as $department) {     
      $tree .='<li class="tree-view closed "<a href="/page-users/.{{department->id}}" class="tree-name">'.$department->name.'</a>'; //first department
      if(count($department->childs)) {
        $tree .=$this->childView($department);// if this department has children               
      }
    }
    $tree .='</ul>';
    //return $tree;
    return view('admin.page',compact('tree'));
  } 

  public function childView($department){                 
    $html ='<ul>';

    foreach ($department->childs as $arr){

      if(count($arr->childs))
      {
        $html .='<li class="tree-view closed"><a  href="/page-users/.{{department->id}}" class="tree-name">'.$arr->name.'</a>';                  
        $html.= $this->childView($arr);
      }
      else
      {
        $html .='<li class="tree-view" ><a href="/page-users/.{{department->id}}" class="tree-name">'.$arr->name.'</a></a>';                                 
        $html .="</li>";
      }                                                
    }            
    $html .="</ul>";
    return $html;
  } 

page-user .blade. php

@extends ('layouts.master')

@section('title')
Users | Admin
@endsection

@section('content') 

<div class="row">
  <div class="col-md-12">
    <div class="card">
      @if (session('status'))
      <div class="alert alert-success" role="alert">
        {{ session('status') }}
      </div>
      @endif
      <div class="card-header"> 
      </div>
      <div class="card-body">
        <div class="table-responsive">
          <table class="table">
            <thead class=" text-primary">
              <th>Name</th>
              <th>Department</th>
            </thead>
            <tbody>
            @foreach($users as $row)
            <tr>
            <script>console.log($row)</script>
            <td>{{ $row->username }}</td>
            <td>{{ $row->name}}</td> 
            </tr>
            @endforeach          
            </tbody>
          </table>
        </div>
      </div>
    </div>
  </div>


  @endsection

  @section('scripts')

  @endsection 

web. php

<?php
use App\User;
use App\Department;

use App\Events\WebsocketDemoEvent;
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/

Route::get('/', function () {
    broadcast(new WebsocketDemoEvent('some data'));
    return view('welcome');
});
Route::get('/page', function () {
    return view('admin.page');
});
Auth::routes();

Route::get('/home', 'HomeController@index')->name('home');
Route::group(['middleware' => ['auth','admin']], function  () {
    Route::get('/role-register','Admin\DashboardController@registered');
    Route::delete('/role-delete/{id}', 'Admin\DashboardController@registerdelete');//delete user
    Route::post('/save-user', 'Admin\DashboardController@store');

    Route::get('/department', 'Admin\DepartmentController@index');
    Route::post('/save-department', 'Admin\DepartmentController@store');
    Route::get('/department-edit/{id}', 'Admin\DepartmentController@edit');//edit department
    Route::put('/department-update/{id}', 'Admin\DepartmentController@update');
    Route::delete('/department-delete/{id}', 'Admin\DepartmentController@delete');//delete department  

    Route::get('/page-users/{id}', 'Admin\DepartmentController@usersdep');//show users  


});
Auth::routes();
Route::get('/home', 'HomeController@index')->name('home');

Route::get('/chats', 'ChatsController@index');//chats
Route::get('/messages', 'ChatsController@fetchMessages');//messages
Route::post('/messages', 'ChatsController@sendMessage');//messages

Route::get('/dashboard', 'Admin\DashboardController@dbcheck');//DATABASE
Route::get('/user-edit/{id}', 'HomeController@registeredit');
Route::get('/role-edit/{id}', 'Admin\DashboardController@registeredit');//edit user
Route::put('/role-register-update/{id}', 'Admin\DashboardController@registerupdate');

Auth::routes();
Route::get('/home', 'HomeController@index')->name('home');


Route::get('store_image', 'StoreImageController@index');
Route::post('store_image/insert_image', 'StoreImageController@insert_image');
Route::get('store_image/fetch_image/{id}', 'StoreImageController@fetch_image');
Route::get('/page',array('as'=>'jquery.treeview','uses'=>'Admin\DepartmentController@treeView'));
Route::get('/pageusers', 'Admin\DepartmentController@usersdep');

Пользователь. php

    public function department()
    {
        return $this->belongsTo(Department::class);
    }

Отдел. php

public function users()
{

    return $this->hasMany(User::class,'department','id');
}

1 Ответ

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

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

РЕДАКТИРОВАНИЕ: Вы не должны принимать идентификатор из запроса, но как параметр маршрута, так что это должно работать

public function usersdep($id){
    $department = Department::with('users')->find($id);
    return view('admin.page-users')->with('users', $department->users);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...