Laravel - 超长关系(感觉不对)

时间:2017-06-19 16:00:04

标签: php laravel

好的,这是我的方法:

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()我有一段很长的关系,但是有这么长的关系并不合适。有一个这么大还是有更好的方法可以做到这一点吗?

1 个答案:

答案 0 :(得分:2)

显然很难说你是否可以在不知道你的关系/模型是什么的情况下简化你的数据库架构。但是,在某些情况下,像这样的复杂关系是完全可以的。在这种情况下,我会在模型上定义一些更具描述性的方法来抽象您在控制器中构建的查询。

而不是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);