У меня есть 3 таблицы с именами 'users', 'tickets' и ticket_user, когда я редактирую пользователя, я хочу отобразить в таблице ниже, какие билеты есть у пользователя, и я могу редактировать таблицу при необходимости, но не нашел рабочего решения пока нет.
в этот момент я получаю эту ошибку: Facade \ Ignition \ Exceptions \ ViewException Отсутствуют обязательные параметры для [Route: user.update] [URI: user / {user}]. (Представление: D: \ Documents \ untitled \ resources \ views \ users \ edit.blade. php) http://127.0.0.1: 8000 / user / 2 / edit
my userscontroller:
public function edit(User $user)
{
if(Gate::denies('edit-users')){
return redirect(route('home'));
}
$roles = Role::all();
$tickets = Ticket::all();
// $user = User::with('tickets')->get();
return view('users.edit')->with([
'user' => $user,
'roles' => $roles,
'tickets' => $tickets
]);
}
Мой клинок:
<div class="card ">
<div class="card-header card-header-primary">
<h4 class="card-title">{{ __('Edit User') }}</h4>
<p class="card-category"></p>
</div>
</div>
<div class="card-body ">
<table class="table">
<thead>
<tr>
<th scope="col">#</th>
<th scope="col"></th>
<th scope="col"></th>
<th scope="col"></th>
</tr>
</thead>
<tbody>
@foreach($user as $detail)
<tr>
<th scope="row">1</th>
<td>
{{$detail->tickets->ticketnaam}}
</td>
<td></td>
<td></td>
</tr>
@endforeach
</tbody>
</table>
</div>
Модель билета:
<?php
namespace App;
use App\User;
use Illuminate\Database\Eloquent\Model;
class Ticket extends Model
{
// protected $table = 'ticket_user';
/**
* @return \Illuminate\Database\Eloquent\Relations\BelongsToMany
* legt de relatie tussen user en module
*/
public function users(){
return $this->belongsToMany('App\User', 'ticket_user')->withPivot('tijd', 'beschrijving');
}
/**
* @var array
*/
protected $fillable = [
'ticketnaam', 'ticketprijs','tijd','beschrijving'];
}
Модель пользователя:
<?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 $fillable = [
'name', 'email', 'bedrijf', 'password',
];
/**
* 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 roles(){
return $this->belongsToMany('App\Role');
}
public function tickets(){
return $this->belongsToMany('App\Ticket');
}
public function hasAnyRoles($roles){
if ($this->roles()->whereIn('name', $roles)->first()){
return true;
}
return false;
}
/**
* laat zien welke rol de gebruiker heeft
* @param $role
* @return bool
*/
public function hasRole($role){
if ($this->roles()->where('name', $role)->first()){
return true;
}
return false;
}
}
Интернет. php :
<?php
// Auth routes
Auth::routes();
// User account routes
Route::resource('/user', 'User\UsersController');
Route::get('users/{user}', ['as' => 'users.edit', 'uses' => 'UsersController@edit']);
Route::patch('users/{user}/update', ['as' => 'users.update', 'uses' => 'UsersController@update']);
// other routes
Route::get('/', function () {
return view('welcome');
})->name('welcome');
Route::get('/home', 'HomeController@index')->name('home');
Auth::routes();
Route::get('/home', 'HomeController@index')->name('home')->middleware('auth');
Route::get('strippenkaart', function () {
return view('kaarten.index');
})->name('strippenkaart');
Route::group(['middleware' => 'auth'], function () {
Route::resource('user', 'UserController', ['except' => ['show']]);
Route::get('profile', ['as' => 'profile.edit', 'uses' => 'ProfileController@edit']);
Route::put('profile', ['as' => 'profile.update', 'uses' => 'ProfileController@update']);
Route::put('profile/password', ['as' => 'profile.password', 'uses' => 'ProfileController@password']);
});
Route::resource('/kaarten', 'Tickets\TicketsController');
Route::resource('/dashboard', 'RegistratieController');