Моя основная модель Tag
имеет отношение «один ко многим» с Product
, где одному Tag
может быть присвоено множество Products
через отношение tag_id
в БД.
В моем представлении редактирования я разрешаю пользователям редактировать тег products
. Эти продукты могут быть добавлены / отредактированы / удалены в форме запроса.
Каждое поле product
в форме берется из массива request()
. Например: request('title'),request('price')
.
Например, я установил $title[$key]
в качестве массива request('title')
.
Затем я подумал о том, чтобы просмотреть каждый из products
для этих tag
и updateOrCreate
на основе данных запроса. Проблема здесь в том, что нет способа определить, действительно ли конкретный product
нуждался в обновлении.
TagController - обновление модели продукта (один ко многим)
foreach($tag->products as $key => $product){
Product::updateOrCreate([
'id' => $product->id,
],
[
'title' => $title[$key],
'price' => $price[$key],
'detail' => $detail[$key],
'order' => $order[$key],
'tagX' => $tagX[$key],
'tagY' => $tagY[$key],
'thumb' => $img[$key],
]);
}
Для начального обновления tag
я установил оператор if
, который отлично работает (хотя и грязно) для основного тега img
.
TagController - обновить модель тега
//Update the tag collection
if($request->hasFile('img')) {
$tag->update([
'name' => $name,
'hashtag' => $hashtag,
'img' => $imgPub,
]);
} else{
$tag->update([
'name' => $name,
'hashtag' => $hashtag,
]);
}
Есть ли лучший способ определить, были ли обновлены поля product
по запросу?
В идеале я бы хотел, чтобы пользователь мог добавлять / удалять или редактировать products
из запроса tag
на редактирование, но не удалять существующие изображения продуктов, если они не были обновлены. Спасибо!