Javascript 在db中插入数据时数组到字符串转换错误

Javascript 在db中插入数据时数组到字符串转换错误,javascript,laravel,vue.js,Javascript,Laravel,Vue.js,我正在使用Vue multiselect。我想将所选选项的id保存在db中,但不幸的是,我得到了数组到字符串转换的错误。我把站点id和管理员都放在了fillebles中。我在控制器端得到了所选选项的数组,但我认为问题出在insert方法中,它抛出了错误。希望你能理解我的问题 Html: <form @submit.prevent="addAllocateSites"> <di

我正在使用Vue multiselect。我想将所选选项的id保存在db中,但不幸的是,我得到了数组到字符串转换的错误。我把站点id和管理员都放在了fillebles中。我在控制器端得到了所选选项的数组,但我认为问题出在insert方法中,它抛出了错误。希望你能理解我的问题

Html:

                        <form @submit.prevent="addAllocateSites">
                            <div class="row">
                                <div class="col-md-4">
                                    <div class="form-group">
                                        <label class="typo__label">Select Site</label>
                                        <multiselect v-model="form.selected_sites" :options="options"
                                                     :multiple="true"
                                                     :close-on-select="false"
                                                     :clear-on-select="false" :preserve-search="true"
                                                     placeholder="Pick Site"
                                                     name = "selected_sites"
                                                     label="asset_name" track-by="asset_name"
                                                     :class="{ 'is-invalid': form.errors.has('selected_sites') }">
                                            <template slot="selection" slot-scope="{ values, search, isOpen }"><span
                                                class="multiselect__single" v-if="values.length &amp;&amp; !isOpen">{{ values.length }} Sites selected</span>
                                            </template>
                                        </multiselect>
                                        <pre class="language-json"><code>{{form.selected_sites}}</code></pre>
                                    </div>
                                    <has-error :form="form" field="selected_sites"></has-error>
                                    <button type="submit" class="btn btn-primary">Save</button>

                                </div>
                            </div>
                            <br>
                        </form>


拯救 脚本:


<script>

    import Multiselect from 'vue-multiselect';
    import Form from 'vform';


    export default {

        components: {
            Multiselect
        },
        data() {
            return {

                form: new Form({
                    selected_sites: [],
                }),
                options: []
            }
        },
        methods: {
            getSites() {
                axios.get('api/sites').then(data => {
                    this.options = data.data;
                    console.log(data.data)
                }, function (data) {
                    console.log(data)
                });
            },
            addAllocateSites(){

                this.form.post('api/allocate_sites').then(() => {

                    toast.fire({
                        type: 'success',
                        title: 'Sites Allocated Successfully'
                    });
                });

            }
        },
        mounted() {
            this.getSites();
            console.log('Component mounted.')
        }
    }
</script>

控制器:

    public function store(Request $request)
    {
        $siteIds = $request->input('selected_sites');

//        dd($siteIds);

        $validation = Validator::make($request->all(), [
            'selected_sites' => 'required|array',
        ]);

        if ($validation->fails()) {
            return ['Fields required'];
        } else {

            for ($i = 1; $i < count($siteIds); $i++) {

                $sites[] = [

                    "site_id" => $siteIds[$i],
                    "administrator_id" => Auth::user()->id,
                ];
            }

            $insertData = AllocateSites::insert($sites);

            if ($insertData) {
                return ['Sites Allocated'];
            } else {
                return ['Failed to add data'];
            }
        }
    }


我找到了解决办法

for ($i = 0; $i < count($siteIds); $i++) {

         $sites[] = [
            "site_id" => $siteIds[$i]['id'],
            "administrator_id" => Auth::user()->id,
             ];
   }

您在哪一行得到错误的可能重复。@N69S我不知道这一行,但我在for循环或after for循环中插入数据时会思考。@DaniyalMughees检查storage/logs/foldererror中的错误行在这一行$insertData=AllocateSites::insert$sites;