Как сохранить значения множественного выбора в Laravel 5.2

У меня есть форма, в которой хранятся новости.

Здесь я использую Multiselect и хочу сохранить все выбранные опции в таблице, как, например, Users, staff, cinemahall, в виде строки.

Моя функция контроллера для хранения значений

 public function store(Request $request)
{

    $input=$request->all();

    General_news::create($input);
    return redirect()->back();
}

Эта функция хранит все отправленные поля, но для множественного выбора она сохраняет только последний параметр, т.е.

Когда форма отправлена, отображаются все выбранные параметры, но они не сохраняются в таблице базы данных должным образом.

помогите мне решить эту проблему.

 Aniruddha Chakraborty10 июл. 2016 г., 07:43
Можете ли вы обновить свой вопрос с помощью HTML-разметки?

Ответы на вопрос(3)

Если вы используете множественный выбор, это, вероятно, означает, что вам нужны отношения «многие ко многим» и сводная таблица. Вроде какposts может принадлежать многимtags а такжеtags может принадлежать многимposts.

В вашем случае это, вероятно, будет междуnews иnews_types столы.

 dollar10 июл. 2016 г., 09:55
спасибо за ваш ответ, но я хочу сохранить это как строку в одной таблице вместо сохранения нескольких таблиц и их взаимосвязи .... Я знаю, что мой подход не подходит, когда дело доходит до нормализации базы данных ....
Решение Вопроса

Убедитесь, что вы установили атрибут name в массив

<select multiple="multiple" name="news[]" id="news">

Чтобы сохранить его как строку, разделенную запятыми

$news = $request->input('news');
$news = implode(',', $news);

У вас есть строка, которая будет выглядетьUsers,staff,cinemahall, Теперь вместо того, чтобы извлечь все входные данные, вам может потребоваться извлечь их один за другим, так как вам нужно изменитьnews значение. Кроме того, вы также можете использоватьexcept() метод для исключенияnews из массы получая все значение.

$news = $request->input('news');
$news = implode(',', $news);

$input = $request->except('news');
//Assign the "mutated" news value to $input
$input['news'] = $news;

General_news::create($input);
return redirect()->back();
 dollar10 июл. 2016 г., 10:19
Спасибо за помощь, еще один запрос, можете ли вы помочь мне сделать обратное, теперь во время редактирования я хочу извлечь строку из таблицы и показать ее как множественный выбор.
 Chay2210 июл. 2016 г., 11:50
Чтобы преобразовать строку в массив, вы можете использоватьexplode(',', $string);

Вы также можете использовать Mutators и Accessorhttps://laravel.com/docs/5.4/eloquent-mutators#defining-an-accessor

public function setFooAttribute($value)
{
    $this->attributes['foo'] = implode(',',$value);
}

public function getFooAttribute($value)
{
    return explode(',',$value);
}

Ваш ответ на вопрос