0

我有一个模型“发票”。此模型与模型“InvoiceLine”具有 hasMany 关系。

public function invoiceLines()
{
    return $this->hasMany('App\Models\InvoiceLine');
}

我想以正确的货币(如 23.59 美元和 52.33 欧元)显示几张发票(简化版)的所有价格

$invoices = Invoice::where(........)->with('invoiceLines')->get();
foreach ($invoices as $invoice) {
    foreach ($invoice->invoiceLines as $line) {
        echo $line->formattedPrice();
    }
}

因此模型“InvoiceLine”有一个方法“formattedPrice”

public function formattedPrice()
{
    $invoice = ?????;
    $currency = $invoice->currency;
    $price = $this->price;

    return formatPrice($price, $currency);
}

但我不知道如何从 invoiceLine 的父“发票”中获取货币属性。

4

2 回答 2

1

在您的InvoiceLine.php模型中添加反比关系。

public function invoice()
{
    return $this->belongsTo(Invoice::class);
}

现在您可以像这样访问您的发票。

$invoice = $this->invoice;
$currency = $invoice->currency;
于 2021-06-14T11:42:56.207 回答
-1

您可以按如下方式拆分总数

$euro_total = 0;
$usd_total = 0;
foreach ($invoices as $invoice) {
foreach ($invoice->invoiceLines as $line) {

        if($invoice->currency == 'EURO'){
            $euro_total = $euro_total + $line->price;
        }
        if($invoice->currency == 'USD'){
            $usd_total = $euro_total + $line->price;
        }

    }
}
echo $euro_total;
echo $usd_total;
于 2021-06-14T14:09:19.023 回答