Как создать маршрут для отображения Laravel отношений API? - PullRequest
0 голосов
/ 27 апреля 2020

Я могу использовать Тинкер, чтобы увидеть связь между товаром и отзывами. Результаты возвращаются.

php artisan tinker
>> App\Model\Product::find(1)->reviews

Как создать маршрут и контроллер для отображения этой взаимосвязи, поскольку метод show уже используется для отображения по идентификатору. Я использую контроллер продукта или контроллер отзывов? Могу ли я показать оба способа обзора по продуктам и продукты по отзывам?

ОБНОВЛЕНО

Вот данные о моих продуктах

Data: [
{
productName: "television",
price: null,
id: 1
},

Вот данные моих отзывов

data: [
{
id: 2,
customerId: "4",
booktitle: null,
description: null,
likes: null,
customer: null,
body: null,
star: null,
productId: "1"
},

Вот моя модель обзора

<?php

namespace App;

use App\Product;
use Illuminate\Database\Eloquent\Model;

class Review extends Model
{
    public $timestamps = true;

    protected $table = 'REVIEWS';

    protected $fillable = [
    'booktitle', 'description', 'updated_at', 'created_at',
    ];

/*  public function customer()
    {
        return $this->hasMany(Customers::class); 
    }*/

    public function product()
    {
        return $this->hasMany(Product::class); 
    }

}

Я знаю, что у меня нет поля обзора в таблице продуктов.

Этот маршрут http://localhost: 8000 / api / v1 / reviews / 2 / products пытается выполнить запрос select * из [PRODUCTS], где [PRODUCTS]. [Review_id] = 2, но review_id не является именем столбца в моей таблице, поэтому я не знаю, откуда это берется.

Этот маршрут http://localhost: 8000 / api / v1 / products / 2 / reviews возвращает 200 ok, но это пустой экран.

1 Ответ

0 голосов
/ 27 апреля 2020

Вы должны создать два маршрута, если хотите получить оба, отзывы по продукту и продукт по обзору.

маршруты
Route::get('/product/{id}/reviews', 'ProductController@getReviews');
Route::get('/review/{id}/product', 'ReviewController@getProduct');
ProductController
public function getReviews(Request $request, $id){
  return App\Model\Product::findOrFail($id)->reviews;
}
ReviewController
public function getReviews(Request $request, $id){
  // considering you have set up relationship and Model: App\Model\Review
  return App\Model\Review::findOrFail($id)->product;
}

Надеюсь, это поможет вам

...