php 我在laravel project上遇到此错误-错误异常试图获取非对象的属性'sales_price'

kmpatx3s  于 2022-10-30  发布在  PHP
关注(0)|答案(2)|浏览(101)

我从helper.php得到这个错误。我需要产品的销售价格。但是我得到这个错误。我不明白当我得到这个错误。
helper.php

public static function getSalesPriceUsingProductIDCode($id, $customerId)
{
    $data = PosCustomerProducts::valid()->where('complete_status',0)->where('customer_id', $customerId)->where('product_id', $id)
    ->select('product_id', 'sales_price')
    ->first()->sales_price;
    return $data;
}

orderSheetExport.php

if(isset($results[$product->id]))
{   
    if (Helper::getSalesPriceUsingProductIDCode($product->id,$results['customer_id'])==0)
    { 
        $excel_dynamic_data_values[$index][] =   $product->whole_sale_price * $results[$product->id];
        $productArray[$rsm_id][$product->id] += $results[$product->id] * $product->whole_sale_price;
        $singleProductArray[$rsm_id][$product->id] = $productArray[$rsm_id][$product->id];

    }else
    {    
        $excel_dynamic_data_values[$index][] = Helper::getSalesPriceUsingProductIDCode($product->id,$results['customer_id']) * $results[$product->id];       
        $productArray[$rsm_id][$product->id]       += $results[$product->id] *  Helper::getSalesPriceUsingProductIDCode( $product->id,$results['customer_id']);
        $singleProductArray[$rsm_id][$product->id] = $productArray[$rsm_id][$product->id];   
    }
}
1yjd4xko

1yjd4xko1#

如果只需要sales_price,请使用value函数

public static function getSalesPriceUsingProductIDCode($id, $customerId)
{
    $data = PosCustomerProducts::valid()->where('complete_status',0)->where('customer_id', $customerId)->where('product_id', $id)
    ->select('product_id', 'sales_price')
    ->value('sales_price');
    return $data;
}

请参考Laravel Queries中的值()

hvvq6cgz

hvvq6cgz2#

我解决了这个问题。我也理解了为什么我会得到这个错误。当我在一个循环中使用这个helper函数时。它得到了一些不是任何销售价格数据的值。所以它忽略了这个错误。所以,我在上面写了if else条件。
Helper.php

public static function getSalesPriceUsingProductIDCode($id, $customerId)
{
    $data = PosCustomerProducts::valid()->where('complete_status',0)->where('customer_id', $customerId)->where('product_id', $id)
    ->select('product_id', 'sales_price')
    ->first();
        if ($data) {
            $data = $data->sales_price;
        } else {
            $data = 0;
        }
    return $data;
}

相关问题