У меня есть форма create team.blade.php ниже этого
Форма команды index.blade.php
отобразить имя пользователя, состоящего из одной команды с этим пользователем, и отобразить проект, который выполняется пользователем, и отобразить пользователя как what (роль).
отношения одного пользователя имеют много команд. и в одной команде много пользователей. поэтому я выбираю отношения "многие ко многим". но когда я создаю команду, я хочу вставить user_id и team_id в сводную таблицу user_teams в качестве таблицы отношений между пользователем и командой.
но когда я попытался создать команду, он не сохранил данные в таблице user_teams. и в указателе группы он не отображает имя пользователя группы с этим пользователем, а отображает проект, который выполняется пользователем, и отображает пользователя как то.
мои пользовательские модели
<?php
namespace App;
use Illuminate\Notifications\Notifiable;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;
use App\Presence;
use App\Models\Project;
use App\Productivity;
use App\Sick_leave;
use App\Annual_leave;
use App\Models\Team;
class User extends Authenticatable
{
use Notifiable;
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'name', 'email', 'password', 'role_id',
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password', 'remember_token',
];
public function role()
{
return $this->belongsTo(Role::class, 'role_id');
}
public function teams()
{
return $this->belongsToMany(Team::class, 'user_teams');
}
public function projects()
{
return $this->belongsToMany(Project::Class, 'user_projects');
}
}
Модели команд
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
use App\User;
use App\Role;
use Auth;
class Team extends Model
{
use SoftDeletes;
protected $table = 'teams';
protected $fillable = [
'id',
'project_id',
];
public function users()
{
return $this->belongsToMany(User::class, 'user_teams');
}
public function project()
{
return $this->belongsTo(Project::class);
}
public function role()
{
return $this->belongsTo(Role::class);
}
}
Модель проекта
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class Project extends Model
{
use SoftDeletes;
protected $table = 'projects';
protected $fillable = [
'project_id',
'project_name',
'start_date',
'end_date',
'project_category',
];
public function users()
{
return $this->belongsToMany(User::class, 'user_projects');
}
public function team()
{
return $this->hasOne(Team::class);
}
}
Модель UserTeam
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class UserTeam extends Model
{
use SoftDeletes;
protected $table = "user_teams";
public function team()
{
return $this->belongsTo(Team::class);
}
public function user()
{
return $this->belongsTo(User::class);
}
}
Командный контроллер
public function index()
{
$users = auth()->user()->name;
$users = User::all();
return view ('teams.index', compact ('teams', 'users', 'projects'));
}
public function create()
{
$users = User::all();
$projects = Project::pluck('project_name', 'id');
return view ('teams.form', compact('projects', 'users'));
}
public function store(Request $request)
{
$team = Team::create($request->all());
$userIds = User::find(2);
$team->users()->attach($userIds);
return redirect()->route('team.create');
}
В user_teams есть поля user_id и team_id. как мне преодолеть это ??






Вы должны создать команду, а затем присоединить к ней пользователей.
Пример из документы:
Прикрепление
Eloquent also provides a few additional helper methods to make working with related models more convenient. For example, let's imagine a user can have many roles and a role can have many users. To attach a role to a user by inserting a record in the intermediate table that joins the models, use the attach method:
$user = App\User::find(1);
$user->roles()->attach($roleId);
В твоем случае:
Командный контроллер
public function store(Request $request)
{
$team = Team::create($request->except('user_id'));
$team->users()->attach($request->get('user_id', []));
return redirect()->route('team.create');
}
Нет, ваша схема верна, Laravel создаст для вас опорную точку с team_id и user_id, вам нужно только передать id пользователей методу присоединения.
когда я попробовал, он вошел в сводную таблицу, но для user_id он не соответствовал user_id, выбранному в соответствии с выбранной опцией.
Вы должны передать users, который вы выбрали в своей форме создания, в действие магазина, на данный момент вы только присоединяете пользователя с id из 2.
в функции store. извиняюсь
для выбора user_id, его следует сохранить в таблице team.
наконец то же самое. user_id не совпадает с опцией выбора
Вы передаете user_id в действие магазина?
Нет, в моей полевой команде ничего user_id
Пожалуйста, добавьте вывод dd($request->all()); к вашему вопросу.
это было добавлено в мой вопрос. в моей полевой команде нет user_id
Надо ли добавлять
user_idв таблицу team?