Я пытаюсь добавить общую сумму каждого receiptitems->value
за квитанцию / родитель.Добавление общей суммы каждого элемента элемента массива по ключу в Laravel, Blade или PHP
Идеальный результат - прохождение квитанций и отображения;
receipt->id
receipt->merchant
receipt->totalValue
Общее значение каждого из дочерних значений (то есть всего значения квитанции).
Пример JSON выход:
[
{
"id":1,
"user_id":1,
"image":"58a31ba406d16.jpg",
"merchant":"Tesco",
"created_at":"2016-04-23 22:02:58",
"receiptitems":[
{
"receipt_id":1,
"category_id":2,
"value":5285
},
{
"receipt_id":1,
"category_id":5,
"value":5231
},
{
"receipt_id":1,
"category_id":5,
"value":6822
}
]
},
{
"id":2,
"user_id":1,
"image":"58a31ba4073c8.jpg",
"merchant":"Tesco",
"created_at":"2016-09-19 02:55:38",
"receiptitems":[
{
"receipt_id":2,
"category_id":2,
"value":7009
},
{
"receipt_id":2,
"category_id":7,
"value":2147
}
]
},
{
"id":3,
"user_id":1,
"image":"58a31ba407a26.jpg",
"merchant":"Tesco",
"created_at":"2016-08-06 12:30:27",
"receiptitems":[
{
"receipt_id":3,
"category_id":7,
"value":4598
},
{
"receipt_id":3,
"category_id":2,
"value":8799
},
{
"receipt_id":3,
"category_id":3,
"value":773
}
]
},
{
"id":4,
"user_id":1,
"image":"58a31ba407e69.jpg",
"merchant":"Tesco",
"created_at":"2016-12-10 21:21:43",
"receiptitems":[
{
"receipt_id":4,
"category_id":5,
"value":883
},
{
"receipt_id":4,
"category_id":5,
"value":3013
},
{
"receipt_id":4,
"category_id":2,
"value":1013
},
{
"receipt_id":4,
"category_id":1,
"value":3243
}
]
},
{
"id":5,
"user_id":1,
"image":"58a31ba408187.jpg",
"merchant":"Tesco",
"created_at":"2017-01-18 14:12:16",
"receiptitems":[
{
"receipt_id":5,
"category_id":7,
"value":1355
},
{
"receipt_id":5,
"category_id":1,
"value":1547
},
{
"receipt_id":5,
"category_id":1,
"value":1640
},
{
"receipt_id":5,
"category_id":1,
"value":2466
},
{
"receipt_id":5,
"category_id":8,
"value":2689
}
]
}
]
Я пытался в контроллере, а также в шаблонах лезвий, и я не могу получить результат, что мне нужно. Я смотрел на array_sum() http://php.net/manual/en/function.array-sum.php, но я не уверен, как его реализовать.
Я пытался в RecriptsController:
$receipts = Receipt::where('user_id', Auth::id())
->with('receiptitems')
->get();
foreach ($receipts as $receipt) {
$result = array_sum($receipt->receiptitems->value);
};
return $result;
А также в шаблоне клинка:
@foreach($receipts as $receipt)
<li>{{ $receipt->merchant }}</li>
<ul>
@foreach($receipt->receiptitems as $item)
<li>{{ array_sum($item->value) }}</li>
@endforeach
</ul>
@endforeach
Спасибо за ответ. Я получаю 'array_column() ожидает, что параметр 1 будет массивом, object given' error –
Похож на коллекцию. Возможно, вы хотите передать его в массив с помощью '(array)' или использовать '-> toArray()' или эквивалентный метод литья. – bishop
Я добавил 'return $ total-> toArray();' вне цикла, и я все равно получаю ту же ошибку (ссылаясь на вторую строку в вашем примере). –