Есть 3 таблицы с настроенной связью многие ко многим:
Deals (id, bx_id)
Products (id, bx_id)
DealsProducts (id, deal_id, product_id)
Через связь добавляются например 3 записи:
public function products()
{
return $this->belongsToMany(Product::class,'product_deal', 'deal_id','product_id', 'BX_ID', 'BX_ID')
->using(ProductDeals::class)
->withPivot([
'PRICE',
'QUANTITY',
'PRODUCT_NAME',
]);
}
$deal->products()->sync($rows);
Но когда пытаешься получить эти 3 записи, то возвращаются всего 2:
При этом
// Вернет 2 записи
$deal = Deal::where('bx_id',15322)->with('products')->firstOrFail();
/***
select * from `products`
inner join `product_deal`
on `products`.`BX_ID` = `product_deal`.`product_id`
where `product_deal`.`deal_id` = ?
*/
// Вернет 3 записи
$products = DB::table('product_deal')
->select('*')
->where('product_deal.deal_id', 15322)
->get();
/***
select * from `product_deal`
where `product_deal`.`deal_id` = ?
*/
Laravel Framework 8.26.1
Почему так происходит? И как получить все записи через связь?