Exception or error:
I’m new in laravel. I’m trying to join multiple tables in the left join however i facing the syntax error and i have no idea where goes wrong.
Code
$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');
})
The error meesage
Syntax error near '`payment_methods` as `payment` payment.id `=` and `transactions`.`deleted_at` is'
As the code above you can see. I’m trying to join table payment_methods
and transactables
within the transactions
table.
How to solve:
Why don’t you use the Eloquent like
$sales = Sale::with('transactions')->get();
Add relation in Sale model
public function transactions()
{
return $this->morphToMany('App\Transaction', 'transactable');
}
For more info, please refer to Laravel docs