Laravel Eloquent: получение данных JSON из 2 таблиц - PullRequest
0 голосов
/ 14 июня 2019

У меня есть 2 стола

  • фестиваль
  • festival_image

как показано ниже: Tables Я хочу получить JSONданные, подобные приведенным ниже, из таблиц Eloquent.

[
    {
        “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();
    }
}

Ответы [ 2 ]

1 голос
/ 14 июня 2019

Во-первых, я предполагаю, что вы уже определили отношения между 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();
}
1 голос
/ 14 июня 2019

Сначала в вашей модели фестиваля вы должны определить связь между 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...