Я пытаюсь выполнить запрос GET для получения определенного фильма через идентификатор /GET 'film/{id}'
и т. Д.
film_table
- идентификатор
- описание
это то, что является частью ответа, что, если у меня есть отношения многие ко многим в модели фильма, как показано в film
модель
public function languages(): BelongsToMany
{
return $this->belongsToMany(
'App\Models\Language',
'film_languages',
'film_id',
'language_code'
);
}
public function categories(): BelongsToMany
{
return $this->belongsToMany(
'App\Models\Category',
'film_categories',
'film_id',
'category_id'
);
}
есть ли способ, с помощью которого вы можете включить эти таблицы как часть ответа, с которым я столкнулся в документах Laravel, под названием «Стремление к загрузке», но не уверен, охватывает ли это то, что мне нужно. на правильном пути?
FilmController
public function show(string $id): string
{
/** @var Film $film*/
$film = film::findOrFail($id)
->with(
'languages',
'categories',
)->get();
return $film->toJson();
Я пытаюсь написать тест PHPUnit, чтобы убедиться, что при захвате фильма через идентификатор он возвращаетсяid
, description
, а также варианты, выбираемые из отношений «многие ко многим».
Это тест, который я начал
FilmControllerTest
public function setUp(): void
{
parent::setUp();
$this->film = factory(Film::class)->create();
$languages = factory(Language::class)->create();
$categories = factory(Category::class)->create();
}
/**
* @test
*/
public function it_should_get_film()
{
$response = $this->json('GET', '/film/' . $this->film->id);
$film= Film::findOrFail($this->film->id);
$response->assertJson([
'id' => $film->id,
'description' => 'This is my favourite film'
]);
}
Вы можете включить эти отношения в фабрику?
FilmFactory
$factory->define(\App\Models\Film::class, function (Faker $faker) {
return [
'id' => $faker->uuid,
'description' => $faker->paragraph
];
});
LanguagesFactory
$factory->define(\App\Models\Language::class, function (Faker $faker){
$langCode = $faker->languageCode;
return [
'code' => $langCode,
'name' => $langCode,
];
});
CategoriesFactory
$factory->define(\App\Models\Category::class, function (Faker $faker){
return [
'main' => $faker->text,
'sub' => $faker->text,
];
});
Могу ли я получить некоторую помощь в этом, пожалуйста, я ударил кирпичную стенунемного помощи и примеров было бы здорово :) спасибо!