Php Laravel 8:多选选项不发送数据

Php Laravel 8:多选选项不发送数据,php,laravel,laravel-8,select-options,Php,Laravel,Laravel 8,Select Options,我在db有两个表,其中一个名为users,它只包含网站的用户信息,另一个名为tags,它包含一些用户可以从中选择的hashtags (就像Stackoverflow一样,用户可以选择多个标记,如php、javascript等) 因此,为了建立这两者之间的关系,我将其添加到Usermodel中: public function tags() { return $this->belongsToMany(Tag::class); } public functio

我在db有两个表,其中一个名为
users
,它只包含网站的用户信息,另一个名为
tags
,它包含一些用户可以从中选择的hashtags

(就像Stackoverflow一样,用户可以选择多个标记,如php、javascript等)

因此,为了建立这两者之间的关系,我将其添加到
User
model中:

public function tags()
    {
        return $this->belongsToMany(Tag::class);
    }
public function users()
    {
        return $this->belongsToMany(User::class);
    }
还有这个标签到
标签
型号:

public function tags()
    {
        return $this->belongsToMany(Tag::class);
    }
public function users()
    {
        return $this->belongsToMany(User::class);
    }
这是blade上的选择选项,用户可以从db中选择多个标签:

<select class="form-control BSinaBold" name="skills[]" id="skills" multiple>
    @foreach(\App\Models\Tag::all() as $tag)
        <option value="{{ $tag->id }}" {{ in_array($tag->id , Auth::user()->tags->pluck('id')->toArray()) ? 'selected' : '' }}>{{ $tag->name }}</option>
    @endforeach
</select>
它工作得很好,很完美,但唯一的问题是这一行没有同步
标记处的数据
表:

public function update(Request $request, $profile)
{
    $validate_data = Validator::make($request->all(),[
        'job' => 'nullable',
        'stackoverflow' => 'nullable',
        'github' => 'nullable',
        'instagram' => 'nullable',
        'linkedin' => 'nullable',
        'website' => 'nullable',
        'location' => 'nullable',
        'skills' => 'array',
    ]);

    $user = User::findOrFail($profile);

    $user->update([
        'job' => request('job'),
        'stackoverflow' => request('stackoverflow'),
        'github' => request('github'),
        'instagram' => request('instagram'),
        'linkedin' => request('linkedin'),
        'website' => request('website'),
        'location' => request('location'),
    ]);

    $user->tags()->sync(request('skills'));

    $user->save();

    return view('profile');
}
$user->tags()->同步(请求('skills')

所以我试着调试,发现
request('skills')
是空的

所以问题是,为什么它不向控制器发送任何数据

我非常感谢你们的任何想法或建议


提前感谢。

我认为您对模型关系的定义是错误的。 标签型号应为:

      public function user()
      {
         return $this->belongsTo(User::class);
      }
以及用户模型关系:

      public function tags()
       {
          return $this->hasMany(Tag::class);
       }
    
如果你想建立一对多的关系