【问题标题】:Multiple API Resources in one call using laravel使用 laravel 一次调用多个 API 资源
【发布时间】:2019-04-24 23:32:33
【问题描述】:

我正在使用 laravel 的 API 资源将资源转换为数组以进行 API 调用,并且工作正常,我是否可以在一次调用中检索多个模型的数据?至于获取用户的 JSON 数据以及 Pages JSON 吗?或者我需要为此单独打电话。

这是我到目前为止所尝试的

//Controller
public function index(Request $request)
{
    $users = User::all();
    $pages = Page::all();
    return new UserCollection($users);
}

//API Resource
public function toArray($request)
    {
        return [
            'name' => $this->name,
            'username' => $this->username,
            'bitcoin' => $this->bitcoin,
        ];
    }

我们将不胜感激任何帮助

【问题讨论】:

    标签: laravel laravel-5 laravel-resource


    【解决方案1】:

    您可以执行以下操作:

    public function index(Request $request)
    {
        $users = User::all();
        $pages = Page::all();
        return [
            'users' => new UserCollection($users),
            'pages' => new PageCollection($pages),
        ];
    }
    

    【讨论】:

    • 谢谢你,这就是我所期待的
    【解决方案2】:

    我正在使用laravel 6.x,我不知道 laravel 正在转换响应或做某事,但我 在以下情况下也以JSON 获得响应:

    class HomeController extends Controller
    {
        public function index()
            {
                return [
                    'advertisements' => new AdvertisementCollection(Advertisement::latest()->get()),
                    'banners' => new BannerCollection(Banner::latest()->get()),
                    'sliders' => new SliderCollection(Slider::latest()->get())
                    ];
            }
    }
    

    【讨论】:

      【解决方案3】:

      laravel 6..

      如果您喜欢下面的内容,这应该 100% 有效,您实际上帮助我解决了我遇到的问题,这是对这种青睐的回报:3。 更改以下内容:

      'advertisements' => new AdvertisementCollection(Advertisement::latest()->get()),
      

      到 (适用于可变的或只是海峡数据库查询)

      'advertisements' => AdvertisementCollection::collection(Advertisement::latest()->get())
      
      
      
      class HomeController extends Controller
      {
          public function index()
              {
                 $ads = Advertisement::latest()->get();
                 $banners = Banner::latest()->get();
                 $sliders = Slider::latest()->get()
                  return [
                      'advertisements' => AdvertisementCollection::collection($ads),
                      'banners' => BannerCollection::collection($banners),
                      'sliders' => SliderCollection::collection($sliders),
                      ];
              }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-06-19
        • 1970-01-01
        • 2022-01-14
        • 1970-01-01
        • 2020-10-05
        • 1970-01-01
        • 1970-01-01
        • 2015-12-19
        相关资源
        最近更新 更多