使用资源获取所有数据库条目及其关系

时间:2020-02-29 18:02:40

标签: laravel eloquent

因此,我目前正在尝试从一个数据库表中获取每个条目,并使用API​​Resource返回它们。我也想返回这些条目的所有关系。 这是我的控制器:

public function all() 
    {

        return GameResource::collection(Game::all()->with('white_user', 'black_user', 'win_user')->get());
    }

以及相应的资源:

public function toArray($request)
    {
        return [
            'GmID' => $this->GmID,
            'White_user' => new UserPublicResource($this->whenLoaded('white_user')),
            'Black_user' => new UserPublicResource($this->whenLoaded('black_user')),
            'Winner' => new UserPublicResource($this->whenLoaded('win_user')),
            'Pgn' => $this->Pgn,
            'StartTime' => $this->StartTime
        ];
    }

我知道问题出在all()方法中,该方法返回一个没有with()方法的集合。 这是错误消息:

方法Illuminate \ Database \ Eloquent \ Collection :: with不存在。

我想知道是否有一种简单的方法来做我想做的事情,而我似乎在文档中找不到任何东西,或者在互联网上找不到想要类似东西的人。

1 个答案:

答案 0 :(得分:1)

您正在获取的数据是收集后的,而调用方法没有的收集则以这种方式工作,它将从游戏表中获取所有数据。

return GameResource::collection(Game::with('white_user', 'black_user', 'win_user')->get());