Laravel красноречивое объединение нескольких таблиц в левом соединении - PullRequest
0 голосов
/ 16 марта 2020

Я новичок в laravel. Я пытаюсь объединить несколько таблиц в левом соединении, однако я сталкиваюсь с синтаксической ошибкой, и я понятия не имею, где происходит ошибка.

Код

$query = DB::table('sales')
    ->leftjoin('transactions AS trx', function ($join) {
        $join->on('payment_methods AS payment', 'payment.id', '=', 'trx.payment_method_id');
        $join->on('transactables', 'transactables.transaction_id', '=', 'transactions.id')
            ->whereNull('transactions.deleted_at')
            ->whereNull('transactables.deleted_at')
            ->where('transactable_type', '=', 'Sale')
            ->where('transactable_id', '=', 'sales.id');
    })

ошибка meesage

Syntax error near '`payment_methods` as `payment` payment.id `=` and `transactions`.`deleted_at` is'

Как код выше вы можете увидеть. Я пытаюсь объединить таблицы payment_methods и transactables в таблице transactions.

1 Ответ

1 голос
/ 16 марта 2020

Почему бы вам не использовать Eloquent, как

$sales = Sale::with('transactions')->get();

Добавить отношение в модели продажи

public function transactions()
{
    return $this->morphToMany('App\Transaction', 'transactable');
}

Для получения дополнительной информации, пожалуйста, обратитесь к Laravel документам

...