簡體   English   中英

Laravel 資源返回空數組

[英]Laravel resource return empty array

我有資源,我通過第三個表獲取產品數據,但很難使關系在模型上起作用,因此它返回空數組。

邏輯

  1. 產品有很多條碼
  2. 條碼可能有(屬於)損壞
  3. 在損壞中,我們通過條形碼表獲得產品槽(我們存儲barcode_id

我還包括了每列的可填充部分,以便您可以查看數據庫中的列。

代碼

Product model

class Product extends Model
{

    protected $fillable = [
        'name', 'slug', 'stock', 'cover', 'description', 'sku', 'price', 'discount',
    ];

    public function barcodes()
    {
        return $this->hasMany(Barcode::class);
    }
}

Barcode model

class Barcode extends Model
{
    protected $fillable = [
        'product_id', 'sku', 'serial_number', 'price', 'discount',
    ];

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

    public function damages()
    {
        return $this->hasMany(DamageProduct::class);
    }
}

DamageProduct model

class DamageProduct extends Model
{
    protected $fillable = [
        'outlet_id', 'user_id', 'barcode_id', 'description',
    ];

    public function barcode()
    {
        return $this->belongsTo(Barcode::class);
    }

    public function user()
    {
        return $this->belongsTo(User::class, 'user_id', 'id');
    }
}

DamageProductsResource resource

class DamageProductsResource extends JsonResource
{
    public function toArray($request)
    {
        $arrayData = [
            'id' => $this->id,
            'outlet' => new OutletsResource($this->whenLoaded('outlet')),
            'user' => new usersResource($this->whenLoaded('user')),
            'barcode' => new BarcodeResource($this->whenLoaded('barcode')),
            'description' => $this->description,
        ];

        return $arrayData;
    }
}

Result

一

任何想法?

更新

如果您需要查看BarcodeResource資源的樣子,請參見此處:

public function toArray($request)
{
        $arrayNull = [
            'id' => $this->id,
            'product' => new ProductsResource($this->whenLoaded('product')),
            'sku' => $this->sku,
            'serial_number' =>  $this->serial_number ? (Int) $this->serial_number : null,
            'price' => (Int) $this->price,
            'discount' => $this->discount ? (Int) $this->discount : null,
        ];
}

我會說您只是忘記了BarcodeResource中的return語句

public function toArray($request)
{
    $arrayNull = [
        'id' => $this->id,
        'product' => new ProductsResource($this->whenLoaded('product')),
        'sku' => $this->sku,
        'serial_number' =>  $this->serial_number ? (Int) $this->serial_number : null,
        'price' => (Int) $this->price,
        'discount' => $this->discount ? (Int) $this->discount : null,
    ];
    return $arrayNull; // this is missing
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM