"Преобразование массива в строку" errorr Laravel-попытка сохранить массив в базе данных
Извините, я новичок в Laravel и пытаюсь сохранить в базе данных в первый раз. Im пытается сохранить массив в базе данных, но появляется ошибка "преобразование массива в строку". Я попытался изменить строковое значение в файле миграции на другие параметры, но появляется та же ошибка.
Контроллер
public function store(Request $request)
{
Myroutes::create([ //posting to acc table
'start' => $request->start,
'end' => $request->end,
'waypoints' => $request->waypoints
]);
return redirect('/');
}
миграция
public function up()
{
Schema::create('myroutes', function (Blueprint $table) {
$table->increments('myroute_id');
$table->integer('user_id');
$table->string('start');
$table->string('end');
$table->string('waypoints');
$table->timestamps();
});
}
модель
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Myroutes extends Model
{
protected $fillable = [
'user_id',
'start',
'end',
'waypoints'
];
}
Смотреть
<div id="dynamicInput" class="form-group">
<label>Additional Destinations</label>
<input type="text" name="waypoints[]" class="form-control" autocomplete="on">
</div>
Таблица базы данных


Ответы - "Преобразование массива в строку" errorr Laravel-попытка сохранить массив в базе данных / "Array to string conversion" errorr Laravel - Trying to save array to database


23.04.2018 07:29:14
У вас есть ошибка: 'waypoints' => $request->waypoints
не будет работать, так как $request->waypoints
является массивом, и вы не можете сохранить массив в поле VARCHAR()
. Если вы implode
вход и преобразуете его в строку, разделенную запятыми, он должен работать нормально:
`'waypoints' => implode(",", $request->waypoints`)
Тем не менее, это обычно считается плохой идеей; рассмотрите возможность использования отношений между Routes
и Waypoints
точками в качестве отдельных таблиц как для ясности, так и для простоты использования (особенно при извлечении/редактировании.)


Route->waypoints
и получить хороший массив
моделей путевых точек. Есть чтение: laravel.com/docs/5.6/eloquent-relationships ; полезные вещи, чтобы знать, несмотря ни на что.


JSON
тоже будет работать, пока его поддерживает СУБД.



23.04.2018 10:11:01
после отправки формы, попробуйте сделать это :
dd($request->all());
затем вы увидите, что будет сохранено,и увидите, что путевые точки-это массив. Вы не можете сохранить массив в виде строки, вы должны преобразовать его в строку. Переменная является массивом из-за :
name="waypoints[]"
это не будет массив, если вы поставите так :
name="waypoints"



16.11.2019 10:48:59
Я использовал это для laravel 5.8
$array = $request->names;
$array = implode(',', $array);
$request['names'] = $array;
$distribute = User::create($request->all());