Я использую рюкзак для laravel, и я пытаюсь добавить / обновить некоторые дополнительные столбцы в сводной таблице, используемой в отношениях «многие ко многим».
Подводя итог контексту: у меня есть модель Задача , другая модель Машина и эта промежуточная сводная таблица machine_task , содержащая многие ко многимотношение между задачей и машиной
В этой задаче machine_task есть machine_id , task_id , а затем логические столбцы m (для «ежемесячных»), q (для «квартальных»), b (для «двухгодичных») и y (для «годовых»).
Вот чтоУ меня
В моих Models / Task.php я определил отношение m-2-m
public function machines()
{
return $this->belongsToMany('App\Machine')->withPivot('m','q','b','y');
}
In / app / Http /Controllers / Admin / TaskCrudController.php У меня есть поля, наиболее релевантным из которых является
$this->crud->addField([ // n-n relationship
'label' => "Machines", // Table column heading
'type' => "select2_from_ajax_multiple_custom", // a customized field type modifying the standard select2_from_ajax_multiple type
'name' => 'machines', // the column that contains the ID of that connected entity
'entity' => 'machines', // the method that defines the relationship in your Model
'attribute' => "name", // foreign key attribute that is shown to user
'model' => "App\Models\Machine", // foreign key model
'data_source' => url("api/machines"), // url to controller search function (with /{id} should return model)
'placeholder' => "Select machine(s)",
'minimum_input_length' => 0,
'pivot' => true,
'dependencies' => ['building_id'], // this "Machines" field depends on another previous field value
]);
. Это прекрасно работает: когда я создаю или обновляю задачу, выполняется вызов AJAX, возвращающий праворезультаты, значения правильно добавляются во входные данные select2, а сводная таблица machine_task правильно заполнена и обновлена с помощью task_id и machine_id когда я нажимаю на кнопку Сохранить и вернуться.
Но как вставить в сводную таблицу дополнительные значения m , q , b , y вместе с task_id и machine_id ?
В конце TaskCrudController.php У меня есть
public function store(StoreRequest $request)
{
// your additional operations before save here
// What I should do here to get the pivot values into the request??????????????
$redirect_location = parent::storeCrud($request);
// your additional operations after save here
// use $this->data['entry'] or $this->crud->entry
return $redirect_location;
}
public function update(UpdateRequest $request)
{
// your additional operations before save here
// What I should do here to get the pivot values into the request??????????????
$redirect_location = parent::updateCrud($request);
// your additional operations after save here
// use $this->data['entry'] or $this->crud->entry
return $redirect_location;
}
В моей модифицированной версии select2_from_ajax_multiple Я добавил несколько строк с флажками для каждого из выбранных параметров.Давайте посмотрим на скриншот для лучшего понимания
select2_from_ajax_multiple_custom
В / vendor / backpack / crud / src / resources / views / fields / select2_from_ajax_multiple_custom.blade.php Я инициализирую подобные значения, а затем использую jquery для обновления строк, синхронизированных с элементом управления select2, но я не знаю, как связать флажки m, q, b, y с каждым из выбранных select2варианты и передать их на запрос.
@if ($old_value)
@foreach ($old_value as $item)
@if (!is_object($item))
@php
$item = $connected_entity->find($item);
@endphp
@endif
<div id="div{{ $item->getKey() }}">
<span> {{ $item->getKey() }} {{ $item->{$field['attribute']} }} -- </span>
Monthly <input type="checkbox" id="m{{ $item->getKey() }}" name="m{{ $item->getKey() }}" value="1" @php if ($item->pivot['m'] == "1") echo "checked"; @endphp >
Quarterly <input type="checkbox" id="q{{ $item->getKey() }}" name="q{{ $item->getKey() }}" value="1" @php if ($item->pivot['q'] == "1") echo "checked"; @endphp>
Biannual <input type="checkbox" id="b{{ $item->getKey() }}" name="b{{ $item->getKey() }}" value="1" @php if ($item->pivot['b'] == "1") echo "checked"; @endphp>
Yearly <input type="checkbox" id="y{{ $item->getKey() }}" name="y{{ $item->getKey() }}"value="1" @php if ($item->pivot['y'] == "1") echo "checked"; @endphp> <br/>
@php
@endphp
</div>
@endforeach
@endif
Большое спасибо заранее за ваше время, и я надеюсь, что вы можете мне помочь!Кинда застряла с этим!