我有下表
技能
id|skill_name|category
用户表
id | username
user_skill
id|userid|skill_id|rating
我想将所有用户的技能插入add_skill
表:
<table class="table table-bordered table-design">
<form class="form-signin" method="POST" action="{{url('admin/my-skills')}}">
{!! Form::token() !!}
<tr class="table-header" >
<th rowspan="2">ID</th>
<th rowspan="2"> Skills</th>
<th colspan="5" >Rate Your Skills Out of 5</th>
</tr>
<tr class="radio-content table-header">
<th class="radio-content">1 star</th>
<th class="radio-content">2 star</th>
<th class="radio-content">3 star</th>
<th class="radio-content">4 star</th>
<th class="radio-content">5 star
</th>
</tr>
<?php $i=1; ?>
@foreach($data as $val)
<tr>
<td>{{$i}}</td>
<td>{{$val->skill_name}}</td>
<td class="radio-content"><input type="radio" name="q{{$i}}" value="1" /></td>
<td class="radio-content"><input type="radio" name="q{{$i}}" value="2"/></td>
<td class="radio-content"><input type="radio" name="q{{$i}}" value="3"/></td>
<td class="radio-content"><input type="radio" name="q{{$i}}" value="4" /></td>
<td class="radio-content"><input type="radio" name="q{{$i}}" value="5"/></td>
</tr>
{{$i++}}
@endforeach
<tr>
<td colspan="2"><p class="submit-label">Submit</p></td>
<td colspan="5"><button type="submit" class="btn-new btn-submit">Submit Your Skills</button></td>
</tr>
</form>
</table>
当我提交表单时,我需要在add_skill
表中插入所有技能,但我的问题是我无法为所有输入无线电设置相同的名称。如果我将名称设置为相同,那么我只能选择一个项目。
任何人都可以告诉我如何实现这一目标吗?如果我的表结构错了,请指导我。
答案 0 :(得分:2)
尽管Aniruddha Chakraborty说,你可以在一个查询中插入多种技能。您拥有的表模式很好,并且是在此方案中建议的:具有两个foreigns键的连接表:一个指向用户,另一个指向技能。虽然根据Laravel惯例,如果将skill_user
命名为skills()
,您的生活将变得更加轻松。
提交表单时,您将获得一系列技能ID。如果您的用户模型具有定义belongsToMany
关系的$user->skills()->sync($request->q);
方法,那么您可以像这样一次插入它们:
<input name="skills[]" />
为了便于阅读,我将HTML中的字段重命名为“技能”(即$user->skills()->sync($request->skills);
)。这样它的描述性更强,你的代码看起来像这样:
akka-http
易于阅读,因为“技能”比“q”更有意义。