У меня есть две таблицы, отделы и пользователи. В одном отделе много пользователей. Один пользователь принадлежит к одному отделу. Я пытаюсь написать foreach l oop, чтобы отображать названия отделов с его пользователями, но я получаю эту ошибку .
Фасад \ Зажигание \ Исключения \ ViewException Неопределенная переменная: департаменты (Представление: C: \ xampp \ htdocs \ Laravel \ blog2 \ resources \ views \ admin \ dashboard.blade. php)
create_users_table
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->bigIncrements('id');
//$table->text('avatar');
$table->string('name');
$table->string('lastname');
$table->string('phone');
$table->string('jobtitle');
$table->integer('department_id');
$table->timestamps();
$table->string('usertype')->nullable();
$table->string('email');
$table->timestamp('email_verified_at')->nullable();
$table->string('password');
$table->rememberToken();
});
}
create_departments_table
public function up()
{
Schema::create('departments', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('name');
$table->timestamps();
});
}
Отдел. php
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Department extends Model
{
protected $table = 'departments';
protected $fillable = [
'name',
];
protected $primaryKey = 'id';
public function department()
{
return $this->belongsTo(Department::class);
}
}
Пользователь. php
<?php
namespace App;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
class User extends Authenticatable
{
use Notifiable;
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $guarded = [];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password', 'remember_token',
];
/**
* The attributes that should be cast to native types.
*
* @var array
*/
protected $casts = [
'email_verified_at' => 'datetime',
];
public function department()
{
return $this->belongsTo(Department::class);
}
}
dashboard.blade. php
@extends ('layouts.master')
@section('title')
DASHBOARD | 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">
<h4 class="card-title"> DASHBOARD </h4>
</div>
<div class="card-body">
<div class="table-responsive">
<table class="table">
<thead class=" text-primary">
<th>ID</th>
<th>Name</th>
<th>Last Name</th>
<th>Department</th>
</thead>
<tbody>
@foreach($departments as $department)
<td> {{$department->name}}</td>
@endforeach
</tbody>
</table>
</div>
</div>
</div>
</div>
@endsection
@section('scripts')
@endsection
DashboardController. php
class DashboardController extends Controller
{ public function index()
{
$users= User::all();
foreach($users as $user)
{
echo $user->department->name;
echo $user->name;
}
}
}
web. php
Route::get('/', function () {
return view('welcome');
});
Auth::routes();
Route::get('/home', 'HomeController@index')->name('home');
Route::group(['middleware' => ['auth','admin']], function () {
Route::get('/dashboard', function () {
$users= User::all();
$departments = Department::with('users')->get();
dd($departments);
return view('admin.dashboard',compact('departments','users'));
});
//Route::get('/dashboard', "Admin\DashboardController@index");
// Route::get('/dashboard{id}', "Admin\DashboardController@index");
Route::get('/role-register','Admin\DashboardController@registered');
Route::get('/role-edit/{id}', 'Admin\DashboardController@registeredit');
Route::put('/role-register-update/{id}', 'Admin\DashboardController@registerupdate');
Route::delete('/role-delete/{id}', 'Admin\DashboardController@registerdelete');
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');
Route::put('/department-update/{id}', 'Admin\DepartmentController@update');
Route::delete('/department-delete/{id}', 'Admin\DepartmentController@delete');
});
Auth::routes();
Route::get('/home', 'HomeController@index')->name('home');
Я тоже это пробовал, но все так же.
<td> {{$department->name}}</td>
@foreach($departments->name as $department)
<td> {{$department}}</td>
@endforeach