提问者:小点点

控制器中一种方法两种解的Laravel差分


一位stack overflow用户回答了我两种返回每个人家具的方法,这种方法是“一对多”的关系。这招很管用。

我的问题是知道这两种方式的区别。每种方式的优点和缺点。

重要提示:Laravel版本:5.8

第一种解决方案:

public function showPersonFurnitures($id) {
        $person = Person::with('furnitures')->findOrFail($id);     
        $furnituresOfEachPerson = $person->furnitures; //<-----
        return response()->json($furnituresOfEachPerson);     
    }

第二种解决方案:

public function showPersonFurnitures($id) {
        $person = Person::with('furnitures')->findOrFail($id);     
        $furnituresOfEachPerson = $person->furnitures()->get(); //<----
        return response()->json($furnituresOfEachPerson);      
 }

共1个答案

匿名用户

总的来说,这两种方法的差别并不大,您将得到相同的结果,不同的是:$Person->Furnitures使用关系,这与它基于一对多关系检索数据的eager loading非常相似。$Person->Furnitures()->Get()是从集合的角度实现的,这就是它具有查询集合语法的原因。