为了账号安全,请及时绑定邮箱和手机立即绑定

Laravel 多重数组

Laravel 多重数组

PHP
翻过高山走不出你 2023-06-24 17:54:34
我有xml导出文件,我需要在其中多次循环数据,但不确定如何完成。逻辑循环产品循环产品关系将产品及其关系数据获取到变量中导出包含产品信息及其关系的文件代码在我们开始编写代码之前,为了便于阅读,最好先提一下,我仅使用 1 个关系示例缩短了 xml 代码。如果它有效,那么我将自己处理其余的输入。(我只需要帮助修复 1 个变量,其余的我会做...)relationship part commented截屏解释我需要的是从中获取'INVOICENO'值$product->allBarcodes->transits(它是数组/可能为空),然后在循环此关系之后获取截至tansNu的列值INVOICENO。有任何想法吗?更新模型关系Product.phppublic function allBarcodes(){    return $this->hasMany(Barcode::class, 'product_id', 'id');}Barcode.phppublic function product(){    return $this->belongsTo(Product::class);}public function transits(){    return $this->hasMany(Transit::class, 'barcode_id', 'id');}Transit.phppublic function barcode(){    return $this->belongsTo(Barcode::class);}
查看完整描述

1 回答

?
蝴蝶不菲

TA贡献1810条经验 获得超4个赞

假设tansNu是一个字符串,您应该能够使用一些方便的集合方法tansNu检索from的数组。为此,您必须预先加载关系(在代码中)$product

// in your $product loop you can get the tansNu list like so

$invoiceNoCollection = collect([$product])->flatMap(function($p){

        return $p->allBarcodes;

    })->flatMap(function($b){

        return $b->transits->pluck('tansNu');

    });

此时$invoiceNoCollection应该持有所有tansNu$product。您没有指定您希望输出是什么样的,但我假设您希望它是唯一的,而不是 null,并且作为一个数组,您可以像这样实现

$invoiceNoArray = $invoiceNoCollection->filter()->unique()->toArray();


查看完整回答
反对 回复 2023-06-24
  • 1 回答
  • 0 关注
  • 100 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信