Laravel:渴望同时加载belongsTo和HasMany关系吗?

时间:2019-03-05 12:04:42

标签: javascript php laravel vue.js

我有两个模型Product和ProductCategory相关,一个产品属于一个产品类别,一个产品类别可以有多个产品。

这是我的模特:

产品:

<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Product extends Model
{
    protected $table = 'products';
    public function productcategory()
    {
        return $this->belongsTo('App\Models\ProductCategory');
    }
}

ProductCategory:

<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class ProductCategory extends Model
{
    protected $table = 'productcategories';
    public function products()
    {
        return $this->HasMany('App\Models\Product');
    }
}

我检索所有类别及其各自的附件产品,如下所示:

$productCategories = ProductCategory::with('products')->get();

这可行,但是我想要它,以便我可以从产品中访问产品类别信息,这是因为我正在使用vue循环遍历每个类别产品,但是我需要从产品本身而不是product_category_id中访问类别信息但是其他领域!

在我的组件中,我想这样做:

product.productcategory.name

但是目前我只能访问:

product.product_category_id

我不想对我的API进行ajax调用来获取此信息,我该如何解决呢?

1 个答案:

答案 0 :(得分:0)

您可以像这样轻松使用nested eager loading

$productCategories = ProductCategory::with('products', 'products.productcategory')->get();

但是您应该考虑直接在vue文件中重新使用ProductCategory值。