登录用户后,用户输入此技能表格,选择技能。
用户可以输入多种技能,然后保存在数据库中。
名称字段
并在桌子上
我不知道skills
andskill_user
表是否应该,我不知道。
如果你是我,你会怎么做?
你能告诉我最干净的编码吗?
public function up()
{
Schema::create('skills', function (Blueprint $table) {
$table->bigIncrements('id');
$table->bigInteger('user_id')->unsigned();
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
$table->string('skill_name');
$table->smallInteger('level');
$table->timestamps();
});
Schema::create('skill_user', function (Blueprint $table) {
$table->bigInteger('skill_id')->unsigned()->nullable();
$table->foreign('skill_id')->references('id')->on('skills')->onDelete('cascade');
$table->bigInteger('user_id')->unsigned()->nullable();
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
$table->unique(['skill_id' , 'user_id']);
});
}
刀
showDynamicExperimental();
function showDynamicExperimental()
{
let html = '' +
'@foreach(auth()->user()->skills as $skill)\n'+
'<div class="col-md-6 position-relative">\n' +
'<i class="fas fa-times text-danger position-absolute"></i>' +
'<div class="row">\n' +
'<div class="col-md-8">\n' +
'<div class="form-group">\n' +
'<label for="skill_name">skill_name</label>\n' +
'<input type="text" id="skill_name" name="skill_name[]" class="form-control" value="{{ $skill->skill_name }}">\n' +
'</div>\n' +
'</div>\n' +
'<div class="col-md-4">\n' +
'<div class="form-group">\n' +
'<label for="level">level</label>\n' +
'<select class="form-control" id="level" name="level[]">\n' +
'<option value="1" {{ $skill->level == 1 ? 'selected' : '' }}>★☆☆☆☆</option>\n'+
'<option value="2" {{ $skill->level == 2 ? 'selected' : '' }}>★★☆☆☆</option>\n'+
'<option value="3" {{ $skill->level == 3 ? 'selected' : '' }}>★★★☆☆</option>\n'+
'<option value="4" {{ $skill->level == 4 ? 'selected' : '' }}>★★★★☆</option>\n'+
'<option value="5" {{ $skill->level == 5 ? 'selected' : '' }}>★★★★★</option>\n'+
'</select>\n'+
'</div>\n' +
'</div>\n' +
'</div>\n' +
'</div>\n ' +
'@endforeach';
$('#showExperimental').append(html);
}
控制器
$user->skills()->detach();
if ($request->skill_name) {
foreach ($request->skill_name as $key => $value) {
$user->skills()->attach($value, [
'user_id' => auth()->id(),
'level' => $request->level[$key],
]);
}
}
User.php
public function skills()
{
return $this->belongsToMany(Skill::class)->withPivot('skill_name');
}
我得到这个错误。
表格中似乎没有一level
列skill_user
。
我认为skill
表格应该只存储ID和技能名称。然后,你在中添加该level
列,skill_user
并使用skill_id
和level
跟踪用户级别。