好的,这是我的方法:
public function edit(Request $request, $ent, $room, $obj)
{
$input = $request->except(['_token']);
Enterprise::where('bedrijfsnaam', $ent)->first()->rooms()->where('name', $room)->first()->objects()->where('name', $obj)->first()->update($input);
return redirect('/enterprise/'.$ent.'/room/'.$room);
}正如你所看到的,在Enterprise::where()我有一个很长的关系,但有这么长的关系感觉不对。有这么大的一个是可以的吗?还是有更好的方法呢?
发布于 2017-06-20 00:08:09
显然,在不真正了解您的关系/模型的情况下,很难说您是否可以简化您的数据库模式。然而,在某些情况下,像这样的复杂关系是完全可以的。在这种情况下,我将在您的模型上定义一些更具描述性的方法,以抽象您在控制器中构建的查询。
代替Enterprise::where('bedrijfsnaam', $ent)->first()->rooms()->where('name', $room)->first()->objects()->where('name', $obj)->first()->update($input);,也许你可以把它简化成类似这样的东西:
Enterprise::where('bedrijfsnaam', $ent)->first()->getRoomByName($name)->getObjectByName($obj)->update($input);
https://stackoverflow.com/questions/44635123
复制相似问题