отобразить данные отношений в таблице в laravel - PullRequest
0 голосов
/ 31 марта 2020

У меня есть 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');

...