mgsmus
Hocam tekrardan merhaba,
Orders tarafında raporladığımda herşey istediğim gibi çalışıyor.
Yapıda şöyle bir değişiklik yaptım invoices tablosuna order_id ekleyerek Order a bağladım;
class Order extends Model
{
use HasFactory;
protected $guarded=[];
public function products()
{
return $this->belongsToMany(Product::class)->withPivot('qty','price');
}
public function invoices()
{
return $this->hasMany(Invoice::class)->with('products')->withSum('products as invoice_product_qty', 'invoice_product.qty');
}
Yapmak istediğim orderları listelerken o ordera ait olan toplam ürün sayısı ve o ordera ait olan invoicelara ait olan ürünlerin toplam sayısını sorgu sırasında yapmak.
return Order::with('products','invoices')
->withSum('products as order_product_qty', 'order_product.qty')
->get();
ile dönen sonuç;
[
{
id: 1,
created_at: "2022-03-05T20:15:54.000000Z",
updated_at: "2022-03-05T20:15:54.000000Z",
order_product_qty: "12",
products: [
{
id: 1,
name: "Product 1",
created_at: "2022-03-05T20:15:54.000000Z",
updated_at: "2022-03-05T20:15:54.000000Z",
pivot: {
order_id: 1,
product_id: 1,
qty: 2,
price: 10
}
},
{
id: 3,
name: "Product 3",
created_at: "2022-03-05T20:15:54.000000Z",
updated_at: "2022-03-05T20:15:54.000000Z",
pivot: {
order_id: 1,
product_id: 3,
qty: 10,
price: 5
}
}
],
invoices: [
{
id: 1,
order_id: 1,
created_at: "2022-03-05T20:15:54.000000Z",
updated_at: "2022-03-05T20:15:54.000000Z",
invoice_product_qty: "2",
products: [
{
id: 1,
name: "Product 1",
created_at: "2022-03-05T20:15:54.000000Z",
updated_at: "2022-03-05T20:15:54.000000Z",
pivot: {
invoice_id: 1,
product_id: 1,
qty: 1
}
},
{
id: 2,
name: "Product 2",
created_at: "2022-03-05T20:15:54.000000Z",
updated_at: "2022-03-05T20:15:54.000000Z",
pivot: {
invoice_id: 1,
product_id: 2,
qty: 1
}
}
]
},
{
id: 2,
order_id: 1,
created_at: null,
updated_at: null,
invoice_product_qty: "1",
products: [
{
id: 1,
name: "Product 1",
created_at: "2022-03-05T20:15:54.000000Z",
updated_at: "2022-03-05T20:15:54.000000Z",
pivot: {
invoice_id: 2,
product_id: 1,
qty: 1
}
}
]
}
]
},
{
id: 2,
created_at: "2022-03-05T20:15:54.000000Z",
updated_at: "2022-03-05T20:15:54.000000Z",
order_product_qty: "7",
products: [
{
id: 3,
name: "Product 3",
created_at: "2022-03-05T20:15:54.000000Z",
updated_at: "2022-03-05T20:15:54.000000Z",
pivot: {
order_id: 2,
product_id: 3,
qty: 3,
price: 5
}
},
{
id: 4,
name: "Product 4",
created_at: "2022-03-05T20:15:54.000000Z",
updated_at: "2022-03-05T20:15:54.000000Z",
pivot: {
order_id: 2,
product_id: 4,
qty: 4,
price: 9
}
}
],
invoices: [ ]
}
]
yapmak istediğim invoice_product_qty
adetlerini order_product_qty
adetlerinin olduğu tarafa getirip sorgu sırasında o ordera ait kalan kalan toplam ürün sayısına göre sorgu yaptırmak.
Umarım anlatabilmişimdir teşekkürler.