Как я думаю, это, как правило, как documentaion Я пытался использовать saveMany
относительно его параметров как объектов модели.
У меня есть модель по имени Set
и это hasMany
Equipment
Итак, из того, что создает набор, я отправляю много полей Equipment
для того, чтобы быть сохраненным как следующее:
//Store method of SetController
$set = new Set();
$set->title = request('title');
$set->eqtype_id = request('eqtype');
$set->product_id = request('product');
$set->parts_count = request('parts_count');
$eq = request('equipments');
$set->equipments()->saveMany(array_map(function($n){return new \App\Equipment(['title' => $n, 'eqtype_id' => request('eqtype')]);}, $eq));
$set->save();
Тем не менее, я всегда получаю сообщение об ошибке об этом eqtype_id
не имеет значения по умолчанию:
SQLSTATE [HY000]: общая ошибка: 1364 Поле ‘eqtype_id’ не имеет
значение по умолчанию (SQL: вставить вequipments
(title
,set_id
,
updated_at
,created_at
) значения (A-1, 2017-03-18 12:07:30,
2017-03-18 12:07:30))
Я думал, что, может быть, request('eqtype')
недоступен из array_map
обратный вызов, поэтому я заменил его на фиксированный номер следующим образом:
$set->equipments()->saveMany(array_map(function($n){return new \App\Equipment(['title' => $n, 'eqtype_id' => 1]);}, $eq));
Но и ошибка та же, кажется, проблема с saveMany
или же array_map
, Я не знаю, как решить эту проблему!
Модель Equipment
связано с обеими моделями Set
а также Eqytpe
следующее:
//Equipment model
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
/**
* App\Equipment
*
* @mixin \Eloquent
*/
class Equipment extends Model
{
public $table = "equipments";
protected $fillable = ['title'];
public function set()
{
return $this->belongsTo(Set::class);
}
public function eqtype()
{
return $this->belongsTo(Eqtype::class);
}
Задача ещё не решена.
Других решений пока нет …