Laravel Присоединяйтесь к данным, и когда присоединение является нулевым для многих ко многим - PullRequest
0 голосов
/ 04 мая 2020

Мне нужно перечислить пользователей, чьи платежи ниже общей суммы, которые должны быть оплачены в их счетах, или пользователей, имеющих счета без совершенных платежей.

Структура моей базы данных выглядит следующим образом:

- Контакты - Счета-фактуры - Payment_Invoices (много лет много) - Платежи

Прямо сейчас я Я могу получать контакты только с платежами, меньшими, чем сумма, в счетах, но не для тех, у которых нет платежей.

$data = Contact::select('contacts.*', 'invoices.totals->total as total',
        DB::raw("IFNULL(SUM(payments.rate), 0) AS paid"),
        DB::raw("IFNULL(COUNT(payments.id), 0) AS pays"))
        ->where('contacts.company_id', '=', $companyId)
        ->rightJoin('invoices', 'invoices.contact_id', 'contacts.id')
        ->rightJoin('payment_invoices', 'payment_invoices.invoice_id', 'invoices.id')
        ->rightJoin('payments', 'payments.id', 'payment_invoices.payment_id')
        ->havingRaw('paid < total')
        ->orWhereHas('invoices',function ($query) {
           $query->whereDoesntHave('payments');
        })
        ->get();

Я также попытался orHavingRaw ('pays = 0') вместо orWhereHas заявление, но не удача.

Любая помощь будет оценена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...