如何一次插入多项技能?

时间:2015-10-14 10:13:22

标签: php mysql laravel laravel-5.1

我有下表

技能

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>

enter image description here 当我提交表单时,我需要在add_skill表中插入所有技能,但我的问题是我无法为所有输入无线电设置相同的名称。如果我将名称设置为相同,那么我只能选择一个项目。

任何人都可以告诉我如何实现这一目标吗?如果我的表结构错了,请指导我。

1 个答案:

答案 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”更有意义。