@OlexAd

Laravel многие ко многим, почему получаются не все данные?

Есть 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:
606e8326a6dce816290637.png

При этом
// Вернет 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

Почему так происходит? И как получить все записи через связь?
  • Вопрос задан
  • 70 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы