我有2张桌子
如下所示: 我想通过Eloquent从表中获取如下所示的JSON数据。
[
{
“id”: 1,
“name”: “festival name 1”,
“url”: [
“https://picsum.photos/480/480/?image=51”,
“https://picsum.photos/480/480/?image=52”,
“https://picsum.photos/480/480/?image=53”
]
},
{
“id”: 2,
“name”: “festival name 2”,
“url”: [
“https://picsum.photos/480/480/?image=54”,
“https://picsum.photos/480/480/?image=55”,
“https://picsum.photos/480/480/?image=56”
]
}
]
有人可以告诉我如何在Laravel 5.7中做到这一点吗?
这是FestivalController.php
class FestivalController extends Controller{
public function getFestivals(){
//I want to know how to do...
return $festivals->toJson();
}
}
答案 0 :(得分:1)
首先,在节日模型中,您需要定义Festival_image之间的关系。
“节日模式”
public function festival_image()
{
return $this->HasMany('App\YourModalName', 'id', 'festival_id');
}
然后在您的控制器上 您将其称为模型节,您将看到它将具有Festival_image。 像这样
$festival = App\YourModalName::all();
$image = $festival->festival_image();
return $image
然后您可以只return
,您将得到laravel照顾将其转换为JSON。
或者,您可以
return response()->json($image);
更多-在这里阅读。
https://laravel.com/docs/5.8/eloquent-relationships#has-many-through
答案 1 :(得分:1)
首先,我假设您已经定义了Festival和Festival_images之间的关系。
只是为了澄清:
节日模型:
请更改您的节日图像模型的名称:
use App\Models\FestivalImage;
public function festivalImages()
{
return $this->hasMany(FestivalImage::class);
}
然后使用您的getFestivals
控制器方法
public function getFestivals(){
$festivals = Festival::with('festival_image')->get();
$festivals = $festivals->map(function($f){
$festival = [
"id" => $f->id,
"name" => $f->name,
"urls" => $f->festivalImages->toArray() ,
];
return $festival;
});
return $festivals->toJson();
}