2016-03-17 5 views
1

Я использую Laravel & Ярость и проблемы с сохранением через hasMany отношения.Laravel save hasMany relationship

У меня есть два класса.

лицам получать:

protected $table   = 'workorder'; 
protected $primaryKey  = 'workorder_id'; 
public static $relationsData = [ 
    'dates'   => array(self::HAS_MANY, 'App\WorkOrderDate', 'foreignKey' => 'workorder_id'), 
]; 

WorkOrderDate:

protected $table   = 'workorder_date'; 
protected $primaryKey  = 'date_id'; 
public static $relationsData = array(
    'workorder' => array(self::BELONGS_TO, 'App\WorkOrder') 
); 

после сохранения моего наряда (который прекрасно работает), я пытаюсь сохранить коллекцию современных моделей, выполнив:

$workorder->dates()->saveMany($myDateCollection->all()); 

Но это не работает с вставкой даты, и это не дает мне никаких ошибок. Я включил ведение журнала запросов, и похоже, что Laravel пытается запустить обновление вместо вставки. Я неправильно определил свои отношения здесь?

+0

Я не уверен, если это все-таки дело в L5 .... но обратно в L3 и 4 я помню, что всякий раз, когда я хотел сохранить отношения, я должен был создать это сначала. Только после этого будет толчок к обновлению работы отношений. Это была странная ошибка. Некоторое время назад я написал ответ, который переместил код push, и вы можете видеть, что он будет сохраняться только в том случае, если отношение уже имеет соответствующую запись. http://stackoverflow.com/questions/17035682/eloquent-push-and-save-difference/17035768#17035768, но опять же, L5 может быть совершенно другим. Просто подумайте, что это так. – KyleK

+0

Это было бы очень запутанно, так как документы отмечают метод saveMany под заголовком «Вставка похожих моделей»: https://laravel.com/docs/5.2/eloquent-relationships#inserting-related-models –

+0

также, что такое $ myDateCollection-> all() return. массив? сбор моделей? – KyleK

ответ

1

Я увлажнял свою коллекцию дат с пользовательского ввода, а когда вы увлажняете модель, Laravel предполагает, что модель уже существует. Оказывается, это не то, что я хочу сделать.

Более подробно здесь: https://github.com/laravel/framework/issues/9360

+0

это некоторая полезная информация, там, спасибо! – KyleK

Смежные вопросы