laravel - Laravel 资源集合显示空字段
问题描述
我正在用 Laravel 开发一个 API。在我正在访问的端点之一中,某些字段显示为空值,但它应该包含一些信息。
请注意“addicionais_descricao”和“valor”字段,当我将它们包含在属性项数组中时,它们总是带有空值,但是如果我将其保留在初始级别,则会显示数据,但这并不能解决我的情况,因为我需要这些信息和属性项:
这是端点调用的地方,我在“属性”表中进行查询,该表与“属性项”表有关系,而“属性项”表链接到“属性”和“产品”。
public function show($id)
{
$atributos = Atributo::query('atributo')
->select(
'atributo.id',
'atributo.atrdescricao',
'atributoitens.atributo_id',
'atributoitens.produto_id',
'produto.prodescricao',
'produto.provalor'
)
->leftJoin('atributoitens', 'atributo.id', '=', 'atributoitens.atributo_id')
->leftJoin('produto', 'produto.id', '=', 'atributoitens.produto_id')
->where('atributo.id', '=', $id)
->get()->unique('id');
return AtributoResource::collection($atributos);
}
资源属性:
public function toArray($request)
{
return [
'id' => $this->id,
'descricao' => $this->atrdescricao,
'atributoitens' => AtributoitensResource::collection($this->atributoitens),
];
}
资源属性:
public function toArray($request)
{
return [
'id' => $this->id,
'atributo' => $this->atributo_id,
'produtos' => $this->produto_id,
'adicionais_descricao' => $this->prodescricao,
'valor' => $this->provalor
];
}
这种情况的正确程序是什么?
解决方案
以这个例子作为参考:
控制器
$data = $shop->products()
->whereStatus(true)
->where('product_shop.active', true)
->where('product_shop.quantity', '>=', $this->min_product_qty)
->paginate(50);
return (new ProductCollection($data))
->response()
->setStatusCode(200);
产品系列
public function toArray($request)
{
return [
'data' => $this->collection
->map(function($product) use ($request) {
return (new ProductResource($product))->toArray($request);
}),
'brand' => $this->when($request->brand, $request->brand)
];
}
产品资源
public function toArray($request)
{
return [
'type' => 'product',
'id' => (string) $this->id,
'attributes' => [
'uuid' => $this->uuid,
'name' => $this->name,
'slug' => $this->slug,
'description' => $this->description,
'thumb_path' => $this->thumb_path,
'cover_path' => $this->cover_path,
],
'relationships' => [
'brand' => $this->brand
]
];
}
推荐阅读
- reactjs - 如何在 react.js 中制作一个按钮以使文本从出现切换到消失?
- java - 显示进度条以等待繁重的计算
- android - Gradle 需要很长时间才能构建
- ios - 如何使用 Kingfisher 在 UIButton 的 setBackgroundImage 期间设置 indicatorType
- node.js - Jenkins 安装 nodejs 插件失败
- xamarin - 不同平台的覆盖视图
- image - 如何在颤动的 BoxDecoration 中显示来自网络的图像?
- php - 将texarea格式转换为php
- go - 如何使用 confluent-kafka-go 获取 kafka 代理错误的事件
- pyspark - Spark 流式传输到 Power BI