Php Laravel资源返回空数组

Php Laravel资源返回空数组,php,laravel,relationship,Php,Laravel,Relationship,我有通过第三个表获取产品数据的资源,但很难使关系在模型上工作,所以它返回空数组 思维方式 产品有许多条形码 条形码可能有(以下)损坏 在损坏中,我们通过条形码表获得产品(我们存储条形码\u id) 我还包括了每个列的可填充部分,以便您可以看到数据库中的列 密码 产品型号 class Product extends Model { protected $fillable = [ 'name', 'slug', 'stock', 'cover', 'description'

我有通过第三个表获取产品数据的资源,但很难使关系在模型上工作,所以它返回空数组

思维方式
  • 产品有许多条形码
  • 条形码可能有(以下)损坏
  • 在损坏中,我们通过条形码表获得产品(我们存储
    条形码\u id
  • 我还包括了每个列的可填充部分,以便您可以看到数据库中的列

    密码
    产品型号

    class Product extends Model
    {
    
        protected $fillable = [
            'name', 'slug', 'stock', 'cover', 'description', 'sku', 'price', 'discount',
        ];
    
        public function barcodes()
        {
            return $this->hasMany(Barcode::class);
        }
    }
    
    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);
        }
    }
    
    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');
        }
    }
    
    条形码型号

    class Product extends Model
    {
    
        protected $fillable = [
            'name', 'slug', 'stock', 'cover', 'description', 'sku', 'price', 'discount',
        ];
    
        public function barcodes()
        {
            return $this->hasMany(Barcode::class);
        }
    }
    
    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);
        }
    }
    
    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');
        }
    }
    
    损坏产品型号

    class Product extends Model
    {
    
        protected $fillable = [
            'name', 'slug', 'stock', 'cover', 'description', 'sku', 'price', 'discount',
        ];
    
        public function barcodes()
        {
            return $this->hasMany(Barcode::class);
        }
    }
    
    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);
        }
    }
    
    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');
        }
    }
    
    损坏产品资源

    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;
        }
    }
    
    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
    }
    
    结果

    有什么想法吗?

    使现代化 如果您需要查看
    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
    语句

    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;
        }
    }
    
    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
    }
    

    这是绝对正确的,但不知何故,产品数据不包括条形码资源<代码>屏幕截图问题来自控制器,我还需要在
    with()中添加条形码关系
    。多谢各位<代码>->带有(['outlet'、'barcode'、'barcode.product'、'user'])