У меня есть 8 таблиц: продукты, вредители, активные вещества, сельскохозяйственные культуры, active_product, pest_product, crop_product и active_pest
Я создал форму, которая загружает информацию о выбранном (агрохимическом) продукте - в этой формеПользователь выбирает вредных организмов, активных веществ и сельскохозяйственных культур, связанных с этим продуктом.После отправки мой существующий код сохраняет ожидаемую информацию в таблице продуктов, и благодаря набору отношений «ownToMany» корректно обновляются сводные таблицы active_product, pest_product и crop_product.
Моя проблема заключается в том, чтоЯ не знаю, как использовать информацию об активных и вредных организмах (то есть их соответствующие значения идентификаторов), чтобы добавить / обновить таблицу active_pest.
Я был бы признателен за некоторые указания.
Методы в моих моделях следующие:
product
public function Actives()
{
return $this->hasMany('App\Models\Active','active_product', 'product_id', 'active_id');
}
public function pest()
{
return $this->belongsToMany('App\Models\Pest','pest_product', 'product_id', 'pest_id');
}
public function active()
{
return $this->belongsToMany('App\Models\Active','active_product', 'product_id', 'active_id');
}
active
public function product()
{
return $this->belongsToMany('App\Models\Product', 'active_product', 'active_id', 'product_id');
}
public function pest()
{
return $this->belongsToMany('App\Models\Pest', 'active_pest', 'active_id', 'pest_id');
}
pest
public function active()
{
return $this->belongsToMany('App\Models\Active', 'active_pest', 'pest_id', 'active_id');
}
public function product()
{
return $this->belongsToMany('App\Models\Product','pest_product', 'pest_id', 'product_id');
}
public function crop()
{
return $this->belongsToMany('App\Models\Crop','crop_pest', 'pest_id', 'crop_id');
}
Я использую BackPack для Laravel - мой контроллер продукта содержит эту функцию для обновления:
public function update(UpdateRequest $request)
{
$redirect_location = parent::updateCrud($request);
return $redirect_location;
}
updateCrud is
public function updateCrud(UpdateRequest $request = null)
{
$this->crud->hasAccessOrFail('update');
$this->crud->setOperation('update');
// fallback to global request instance
if (is_null($request)) {
$request = \Request::instance();
}
// update the row in the db
$item = $this->crud->update($request->get($this->crud->model->getKeyName()),
$request->except('save_action', '_token', '_method', 'current_tab', 'http_referrer'));
$this->data['entry'] = $this->crud->entry = $item;
// show a success message
\Alert::success(trans('backpack::crud.update_success'))->flash();
// save the redirect choice for next time
$this->setSaveAction();
return $this->performSaveAction($item->getKey());
}
Спасибо, Том