Найти и заменить в коллекции Laravel - PullRequest
0 голосов
/ 11 июля 2019

Я пытаюсь обновить коллекцию laravel другой коллекцией. Вот мои коллекции:

$acc = DB::table('accounts')
    ->where('accounts.branchid', $branch_id)
    ->select('code','title','opbal','clbal')->get();
$rslt = DB::table('journal')
    ->where('journal.branchid', $branch_id)
    ->where(function($q) {$q->where('journal.cancel','!=',1)->orWhereNull('journal.cancel');})
    ->select('code',DB::raw('sum(IFNULL(dr,0) - IFNULL(cr,0)) as total'))->groupBy('code')->Get('code','total');

Я хочу обновить $ acc-> clbal с помощью $ rslt-> total, где $ acc-> code = $ rslt-> code

Я пробовал это, но это не работает

foreach ($rslt as $row) {
    $getacc = $acc->where('code',$row->code);
    $getacc->clbal = $row->total;
}

1 Ответ

0 голосов
/ 11 июля 2019

Вот решение.

$acc = DB::table('accounts')
    ->where('accounts.branchid', $branch_id)
    ->select('code','title','opbal','clbal')->get();
$rslt = DB::table('journal')
    ->where('journal.branchid', $branch_id)
    ->where(function($q) {$q->where('journal.cancel','!=',1)->orWhereNull('journal.cancel');})
    ->select('code',DB::raw('sum(IFNULL(dr,0) - IFNULL(cr,0)) as total'))->groupBy('code')->Get('code','total');

foreach ($rslt as $row) {
    $getacc = $acc->where('code',$row->code)->first();
    $getacc->update(['clbal' => $row->total]);
}
...