2017-02-07 1 views
0

В моем контроллере я вызываю модель своих счетов-фактур, которая выполняет разбиение на страницы. После того, как я получу результаты, я должен выполнить цикл каждого результата и добавить пару ключей => значение к исходным результатам. я мой Laravel настроить в конфиге/database.php, чтобы получить результаты в виде массивов:Добавить пару ключевых значений в результаты из модели Laravel с разбивкой на страницы

'загрузить' => PDO :: FETCH_ASSOC,

Мой код в моем контроллере

$invoices = Invoices::getInvoices($clientId); 
    $total = 0; 
    foreach($invoices as $key=>$inv) { 

     $payments = Payments::getPaymentAmount($inv['InvoiceId']); 

     foreach($payments as $pmt) { 

       $total += $pmt['Pmt_Amount']; 

     } 

     $invoices[$key]['total'] = $total; 
    } 

Мои Счета-фактуры модель:

public static function getInvoices($clientId) 
{ 
    $invoices = DB::table('invoices') 
    ->where('ClientId', '=', $clientId) 
    ->paginate(25); 
    return $invoices; 
} 

и моя модель платежей

public static function getPaymentAmount($invoiceId) 
{ 
    $payment = DB::table('payments') 
     ->select('Pmt_Amount', 'PaymentStatusId') 
     ->where('InvoiceId', $invoiceId) 
     ->get(); 

    return $payment; 
} 

Когда я пытаюсь добавить «всего» в массив счетов-я получаю следующую ошибку

Косвенное модификация перегруженного элемента Осветите \ PAGINATION \ LengthAwarePaginator не имеет никакого эффекта

+0

Почему вы используете 'DB' в модели Eloquent для вызова таблицы, за которую должна отвечать эта модель? –

ответ

0

Ваши $ счета на объект, попробуйте toArray() после функции getInvoices():

$invoices = $invoices->toArray(); 
+0

Это сработало, но теперь мои данные полные массивы - после того, как я добавил значение, которое мне нужно, есть способ преобразовать его обратно в формат Illuminate \ Pagination \ LengthAwarePaginator Object, чтобы мой блейд-шаблон мог работать как раньше? – Yeak

Смежные вопросы