соединяя две таблицы через сводную таблицу laravel6 - PullRequest
0 голосов
/ 08 марта 2020

Извините за абстрактный заголовок, но я не могу объяснить, что я хочу в заголовке. Я хочу, чтобы пользователь вошел в 1) Создайте команду 2) Просмотрите его команды, я выполнил макет и создаю функциональность команды .Но я не могу понять, как отобразить команды пользователя, который в данный момент вошел в систему.

Мой CreateTeamController

  public function store(Request $request)
  {
    $team=Team::create($request->all());

    return redirect()->route('view');
  }

Мой ViewTeamController (это та часть, которая неправильна, я думаю, это отображает все команды, но я хочу только все команды пользователя, который вошел в систему)

      public function index()
      {

        $user=User::find(Auth::id());
        $teams=Team::all();
        $user->teams()->sync($teams);
        $user = User::with('teams')->find(Auth::id());
        return view('teams.viewteams',compact('user'));


      }

моя команда. php модель

class Team extends Model
{
  protected $fillable = [
      'team_name', 'desc',
  ];

  protected $table='teams';

  public function users(){
    return $this->belongsToMany(User::class,'team_user','users_id','teams_id');
  }
}

мой пользователь. php модель

    public function teams(){
      return $this->belongsToMany(Team::class,'team_user','users_id','teams_id');
    }

my createteams.blade. php view

@extends('layouts.app')

@section('content')
<div class="container">
    <div class="row justify-content-center">
        <div class="col-md-8">
            <div class="card">
                <div class="card-header"><h2 style="text-align:center;">Create Your Own Team</h2></div>

                <div class="card-body">
                    <form method="POST" action="createteams">
                        @csrf

                        <div class="form-group row">
                            <label for="team_name" class="col-md-4 col-form-label text-md-right">Team Name</label>

                            <div class="col-md-6">
                                <input id="team_name" type="text" class="form-control @error('team_name') is-invalid @enderror" name="team_name" value="{{ old('team_name') }}" required autocomplete="team_name" autofocus>

                                @error('team_name')
                                    <span class="invalid-feedback" role="alert">
                                        <strong>{{ $message }}</strong>
                                    </span>
                                @enderror
                            </div>
                        </div>

                        <div class="form-group row">
                            <label for="desc" class="col-md-4 col-form-label text-md-right">{{ __('Team Description') }}</label>

                            <div class="col-md-6">
                                <input id="desc" type="text"  name="desc" class="form-control @error('desc') is-invalid @enderror"value="{{ old('desc') }}">

                                @error('desc')
                                    <span class="invalid-feedback" role="alert">
                                        <strong>{{ $message }}</strong>
                                    </span>
                                @enderror
                            </div>
                        </div>
                        <div class="form-group row">
                            <label for="org_select" class="col-md-4 col-form-label text-md-right">{{ __('Select up to 4 Orgs') }}<br>Hold Ctrl For multiple selection</label>

                            <div class="col-md-6">
                                <select id="org_select" multiple class="form-control" name="org_select" value="{{ old('org_select') }}" autocomplete="org_select">
                                        <option value= "frederick">Frederick</option>
                                        <option value="I dont know">Cyprus Uni</option>
                                      </select>
                                @error('org_select')
                                    <span class="invalid-feedback" role="alert">
                                        <strong>{{ $message }}</strong>
                                    </span>
                                @enderror
                            </div>
                        </div>
                        <div class="form-group row mb-0">
                            <div class="col-md-6 offset-md-4">
                                <button type="submit" class="btn btn-primary">
                                    Confirm
                                </button>
                            </div>
                        </div>
                    </form>
                </div>
            </div>
        </div>
    </div>
</div>
@endsection

My viewteams.blade. php view

@extends('layouts.app')

@section('content')
<div class="container">
    <div class="row justify-content-center">
        <div class="col-md-8">
            <div class="card">
                <div class="card-header"><h2 style="text-align:center;">Your Teams</h2></div>


                <div class="card-body">
                  @foreach ($user->teams as $team)
                  {{$team->team_name}}

                  @endforeach


                </div>
            </div>
        </div>
    </div>
</div>
@endsection

Ответы [ 2 ]

1 голос
/ 09 марта 2020

Мне кажется, что ваше обратное отношение к пользователю в модели Команд должно быть изменено на принадлежность. Таким образом, у пользователя может быть много команд, но у команды может быть только один пользователь.

class User extends Model
{
    public function teams()
    {
        return $this->hasMany('App\Team');
    }
}

class Team extends Model
{
    /**
     * Get the user that owns the team.
     */
    public function user()
    {
        return $this->belongsTo('App\User');
    }
}

Непонятно, как настроен маршрут вашего магазина и если вы вводите пользователя, но если запрос не содержит вошедший в систему пользователь, вы можете обновить его так:

public function store(Request $request)
{
    $user = auth()->user();
    $user->teams()->create($request->all());
    return redirect()->route('view');
}

Пример контроллера для получения команды пользователей

class TeamController extends Controller
{
    public function index()
    {
        // Get logged in user
        $user = auth()->user()->with('teams');

        return view('teams.index', ['user' => $user]);
    }
}

// in view
@foreach ($user->teams as $team)
    <p>Team name: {{ $team->name }}</p>
@endforeach
0 голосов
/ 09 марта 2020

нашел решение мой CreateTeamController

  public function store(Request $request)
  {
    $user=auth()->user();
    $team=Team::create($request->all());
    $user->teams()->attach($team);




    return redirect()->route('view');
  }

myviewteamcontroller

      public function index()
      {

        $user=User::find(Auth::id());
        $user = User::with('teams')->find(Auth::id());
        return view('teams.viewteams',compact('user'));



      }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...