我有一个功能postShippingmethods
,其中我根据用户在表单中指定的内容删除,更新或创建新的送货方式。它的工作方式与应该的一样,只是如果删除了任何方法,当尝试使用更新的方法来检索用户模型时,会得到空结果。
要删除方法,我首先要获得用户:
$user = \App\User::where('id',$id)->with(['shipping_profiles' => function($query) {
$query->where('default', 1);
}, 'shipping_profiles.methods' ])->first();
我将存储的方法与请求中的方法进行比较;如果缺少任何内容,则应将其删除。
此代码将删除:
foreach($non_included_ids as $id){
$method = \App\ShippingMethod::find($id);
$method->suppliers()->detach();
$method->delete();
}
然后我再次吸引用户,以获取更新数据:
$user = \App\User::where('id',$id)->with(['shipping_profiles' => function($query) {
$query->where('default', 1);
}, 'shipping_profiles.methods' ])->first();
^^如果未删除任何内容,此方法效果很好,但是由于某些原因如果删除了某些内容,上述代码将不返回任何内容。当我尝试使用$user
检索数据时,我当然会得到"Trying to get property of non object"
。
那么任何人都可以解释为什么会发生这种情况以及我应该怎么做才能使用户获得更新的数据?
答案 0 :(得分:0)
在循环中使用其他变量名称:
foreach($non_included_ids as $non_included_id){
否则,循环将更改$id
的值,而\App\User::where('id',$id)
则会提取错误的用户。