我正在使用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,
];
}
任何帮助都会得到高度重视
答案 0 :(得分:3)
您可以执行以下操作:
public function index(Request $request)
{
$users = User::all();
$pages = Page::all();
return new response()->json([
'users' => new UserCollection($users),
'pages' => new PageCollection($pages),
]);
}
答案 1 :(得分:0)
我正在使用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())
];
}
}
答案 2 :(得分:0)
laravel 6 ..
如果您喜欢以下内容,这应该可以100%起作用,您实际上是在帮助我解决我遇到的问题,这是对这个偏爱的回报:3。 更改以下内容:
'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),
];
}
}
到 (将使用可变的或仅用于海峡数据库查询)
Internet Explorer