Как использовать eloquent для извлечения столбца из другой таблицы - PullRequest
0 голосов
/ 21 февраля 2019

У меня есть две таблицы

product: id|category ...
category: id|name ...

product.category - это внешний ключ, связанный с category.id.Я создаю базовый CRUD и хотел бы отобразить все продукты в таблице продуктов, а также название категории, к которой они принадлежат, а не идентификатор категории.Чтобы сделать это, при поиске документации laravel я наткнулся на конструктор запросов и достиг своей цели.

public function index()
{
    $products = \DB::table('products')
        ->join('categories', 'products.category', '=', 'categories.id')
        ->select('*')
        ->get();

    return view('product' ,compact('products'));
}

Под моими моделями для продукта и категории я создал соответствующие отношения.

product.php :

public function category()
{
    return $this->belongsTo('App\Category');
}

category.php :

public function products()
{
    return $this->hasMany('App\Product');
}

Я постоянно слышу о силе Eloquent, и мне было интересно, как я могу добиться аналогичного результата с eloquent, и предназначен ли eloquent для таких операций или построитель запросовэто правильный путь.Кажется, что каждый учебник онлайн использует только сценарий поста и комментариев для получения всех комментариев, относящихся к посту.

1 Ответ

0 голосов
/ 21 февраля 2019

Вы можете использовать этот код

public function index()
{
    $products = Product::with('category')->get();

    return view('product' ,compact('products'));
}

В блейде

@foreach($products as $product)
    {{$product->name}}
    {{$product->category->name ?? ''}}
    //or
    @if ($product->category)
        $product->category->name
    @endif

@endforeach

Также, если в таблице проекта внешний ключ не равен category_id.В вашем случае

public function category()
{
    return $this->belongsTo('App\Category', 'category');
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...