левое внешнее соединение, из таблицы была группа laravel - PullRequest
0 голосов
/ 07 мая 2020

, как покинуть таблицу соединения, было группой, в моем случае таблица A имеет номер учетной записи данных, а таблица B - транзакция, мне нужно вычислить и сгруппировать по номеру учетной записи перед присоединением к таблице A, если в sql natife похоже на приведенное ниже

select name.account_no
,amount
from
ci_account_name name left join (
    select account_no,currency_id,sum(amount) as amount from 
    ci_account_transaction
    where status <> 'X' and store_id = 62242
    group by account_no,currency_id
) as trans
on name.account_no = trans.account_no

, что кодирование работает, но как реализовать в laravel красноречиво. Я попробовал код ниже, но есть ошибка

public function reportShowZerro($data){
        $return = $this->accountNameModel->select (['ci_account_name.*'
                            ,'amount'
                        ])
                        ->leftJoin("
                            $this->model->select(['account_no','currency_id',\DB::raw('SUM(amount) amount')
                            ])
                            ->where('store_id',62242)
                            ->where('status','<>','X')
                            ->where('year',$data['year'])
                            ->where('month',$data['month'])
                            ->groupBy('account_no','currency_id')
                            ) as trans",'ci_account_name.account_no','=','trans.account_no'
                        ->whereIn('ci_account_name.store_id',[0,62242)
                        ->get();
        return $return;             
    }

1 Ответ

0 голосов
/ 16 мая 2020
public function reportWithModel($data){
        return $this->accountNameModel->select([
            'ci_account_name.*',
            'trans.store_id as trans_store_id','currency_id','amount'
                ])->leftJoin(
                    \DB::raw('
                    (select account_no,currency_id,store_id,sum(amount) as amount from 
                        ci_account_transaction
                        where status <> "X" and store_id = '.store()->id.'
                        and year = '.$data["year"].' and month = '.$data["month"].'
                        group by account_no,currency_id
                    ) as trans
                '),
                'trans.account_no',
                '=',
                'ci_account_name.account_no'
                )
                ->whereIn('ci_account_name.store_id',[0,store()->id])
                ->orderBy('ci_account_name.account_no')
                ->get();
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...