У меня есть функция, которая показывает отдел в виде дерева, он проверяет наличие узла 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');
}