javascript - Laravel:急切加载belongsTo和HasMany关系?
问题描述
我有两个模型 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');
}
}
产品分类:
<?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 调用来获取这些信息,我该如何解决这个问题?
解决方案
您可以像这样轻松使用嵌套急切加载
$productCategories = ProductCategory::with('products', 'products.productcategory')->get();
但是您应该考虑直接在您的 vue 文件中重新使用 ProductCategory 值。
推荐阅读
- python - 使用 BeautifulSoup 从上一页抓取
- javascript - 如何获取用户输入与 API 交互
- python - 尝试下载kivy时遇到问题
- excel - ExportAsFixedFileFormat 突然不从 Excel 文档导出图像和格式有什么想法吗?
- php - 参数号无效:参数未在第 20 行的 C:\wamp\www\stage\core\addUsers.php 中定义
- oauth - 授权服务器不支持使用此方法获取令牌
- ios - 用于图片上传的 Firebase 存储
- php - 如何使用超薄路由器动态调用方法?
- swift - 在扩展的 CollectionViewCell 旁边为蒙版设置动画
- algorithm - 在网格中查找彼此接近的顶点