我的主模型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
,但是如果没有更新现有产品图像,则不能删除它们。谢谢!