Я использую Vue Multiselect.Я хочу сохранить идентификатор выбранных опций в БД, но, к сожалению, я получаю ошибку Преобразование массива в строку .Я помещаю как site_id, так и administrator в fillables. Я получаю массив выбранных опций на стороне контроллера, но я думаю, что проблема в методе вставки, который вызывает ошибку.Надеюсь, вы понимаете мой вопрос.
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 && !isOpen">{{ values.length }} Sites selected</span>
</template>
</multiselect>
<pre class="language-json"><code>{{form.selected_sites}}
Сохранить
Сценарий:
<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'];
}
}
}