这是我的问题-- user_id正在复制其他的user_id,没有使用嵌套循环进行应用或分离,我认为问题在我的user_id中--我将展示其他的照片,以具体描述我的问题。
当选择两个项目分配给单个user1时,它的工作效率很高。不是复制的,
就像这张照片:

但是当我试图分配不同的项目和用户时,它是在复制user1。没有附加在其他项目上的user2

与此相同,当im将单个项目分配给两个或多个用户时,它不只是附加用户1,用户2不工作。

这是我的刀片文件。我在使用name[]和project[]
<form method="POST" class="mx-8 space-x-4" action="{{ route('home.create') }}">
@csrf
@method('POST')
<div class="flex space-x-4">
<div class="inline-block relative w-64 mb-2">
<label for="" class="mb-5 text-lg">Project</label>
<select name="project[]" class="p-2 block appearance-none bg-white border border-gray-400 hover:border-gray-500 px-4 py-2 pr-8 rounded shadow leading-tight focus:outline-none focus:shadow-outline">
@foreach ($projects as $project)
<option value="{{ $project->id }}">{{ $project->name }}</option>
@endforeach
</select>
</div>
<div class="inline-block relative w-64 mb-2">
<label for="" class="mb-5 text-lg">Name</label>
<select name="user[]" class="p-2 block appearance-none bg-white border border-gray-400 hover:border-gray-500 px-4 py-2 pr-8 rounded shadow leading-tight focus:outline-none focus:shadow-outline">
@foreach ($users as $user)
<option value="{{ $user->id }}">{{ $user->name }}</option>
@endforeach
</select>
</div>
</div>
<div class="flex space-x-4">
<div class="inline-block relative w-64 mb-2">
<select name="project[]" class="p-2 block appearance-none bg-white border border-gray-400 hover:border-gray-500 px-4 py-2 pr-8 rounded shadow leading-tight focus:outline-none focus:shadow-outline">
@foreach ($projects as $project)
<option value="{{ $project->id }}">{{ $project->name }}</option>
@endforeach
</select>
</div>
<div class="inline-block relative w-64 mb-2">
<select name="user[]" class="p-2 block appearance-none bg-white border border-gray-400 hover:border-gray-500 px-4 py-2 pr-8 rounded shadow leading-tight focus:outline-none focus:shadow-outline">
@foreach ($users as $user)
<option value="{{ $user->id }}">{{ $user->name }}</option>
@endforeach
</select>
</div>
</div>
<button type="submit" class="bg-green-300 border border-gray-300 p-3">Submit</button>
</form>这是我的模型项目
class Project extends Model
{
use HasFactory;
protected $fillable = ['name'];
public function users(){
return $this->belongsToMany(User::class);
}
} 这是我的迁移project_user
public function up()
{
if (!Schema::hasTable('project_user')) {
Schema::create('project_user', function (Blueprint $table) {
$table->foreignId('project_id')->constrained()->onDelete();
$table->foreignId('user_id')->constrained()->onDelete();
});
};
}这是我的ProjectController,我认为我的代码在让嵌套附加到我的枢轴表上是错误的,这就是为什么当我试图将其他user_id分配给其他项目或复制它的时候
public function create(Request $request)
{
foreach($request->input('project') as $project){
$list=[];
$projects = Project::find($project);
foreach($request->input('user') as $user){
$users = User::find($user);
$list[$projects->id] = ['user_id'=>$users->id];
}
$projects->users()->attach($list);
return redirect()->back()->with('success','Successful created!');
}请帮我解决这个问题,我试过很多次了,但还是解决不了
发布于 2022-05-27 11:14:15
问题在于创建方法。通过表单发送两个数组。要知道必须将哪个用户添加到项目中,必须参考数组的索引,以便将usersi的用户分配给projectsi项目。
另一个错误是,附件方法必须在模型对象上使用,您可以传递给它一个id或一个id数组。但是,您正试图将关联数组project_id => user_id附加到项目。
我还重命名了一些变量,以更好地适应它们所代表的内容。
public function create(Request $request)
{
foreach($request->input('project') as $index => $project_id){
$project = Project::find($project_id);
$project->users()->attach($request->input('user')[$index]);
}
return redirect()->back()->with('success','Successful created!');
}https://stackoverflow.com/questions/72402949
复制相似问题