Вычитание двух таблиц в laravel

0

Привет, я смог получить значения из двух таблиц, теперь я хочу, чтобы эти два значения были вычтены. Как я могу сделать это здесь, в laravel?

public function displayBalance()
    {
        $results= DB::table('accountspayable')
            ->selectRaw('sum(accountspayable.amount) as sum')
            ->where('accountspayable.regnum','=','15459')
            ->get();

        $subjects= DB::table('pay')
            ->selectRaw('sum(pay.amount) as sum')
            ->join('accountspayable','pay.accountno','=','accountspayable.accountno')
            ->where('accountspayable.regnum','=','15459')
            ->get();

    return View::make('users.Balance')->with(array('results'=>$results,'subjects'=>$subjects));
}   
  • 0
    Не могли бы вы просто сделать: $results - $subjects ?
  • 0
    @SpencerWieczorek Я сделал, но это не поддерживаемый операнд
Показать ещё 5 комментариев
Теги:
database
eloquent
laravel-4

1 ответ

0

Попробуйте это так:

public function displayBalance()
{
    $results = DB::table('accountspayable')->
        where('regnum'. '='. '15459')->
        sum('amount');

    $subjects = DB::table('pay')->
        join('accountspayable','pay.accountno','=','accountspayable.accountno')->
        where('accountspayable.regnum','=','15459')->
        sum('pay.amount');

    return View::make('users.Balance', compact('results', 'subjects'));
}

Вероятно, вы получили коллекции из 1 записи, имеющей 1 атрибут (сумма). И это единственное, что вам в основном нужно. Таким образом, вы можете использовать агрегированные функции непосредственно в построителе запросов, чтобы получить значения SUM.

Также я использовал "compact", чтобы присвоить значения, которые вы только что вернули в представление. Это не обязательно, но сохраняет некоторый код и его легче читать.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню