Как сохранить значение массива из Select2 JS в Laravel - PullRequest
0 голосов
/ 12 января 2019

Я использую базу данных MySQL. У меня есть select2 JS с несколькими значениями Вот мой код

My Blade View и JS

<input type="text" class="form-control tools_id" name="tools_id[]" multiple/>
var $tools_id = jQuery('.tools_id');
$tools_id.select2({
    multiple: true,
    placeholder: 'Tools',
    ajax: {
        url: 'sample/gettools',
        dataType: 'json',
        delay: 250,
        data: function (term, page) {
            return {
                q: term, //search term
            };
        },
        results: function (data) {
            return {
                results: $.map(data, function (item) {
                    return {
                        text: item.tools,
                        id: item.tools_id
                    }
                })
            };
        },
        cache: true
    }
});

Моя модель

namespace App;

use Illuminate\Database\Eloquent\Model;

class Sample extends Model
{
    protected $primaryKey = 'id';

    public $incrementing = false;

    protected $table = 'lab_sample';

    protected $casts = [
        'tools_id' => 'array'
    ];

    protected $fillable = ['name','summary','tools_id'];
}

Мой контроллер

public function store(Request $request)
{
    $sample = Sample::create([
        'name'     => $request->name,
        'summary'  => $request->summary,
        'tools_id' => $request->input('tools_id'),
    ]);

    return Response::json($sample);
}

Мой код успешно сохранил данные, но проблема в том, что когда я выбрал более одного значения / тега, он сохранил значение массива (tools_id) следующим образом

["20,21"]

Где это должно быть так

["20","21"]
...