Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

asadbekDev's avatar

Join in Laravel and Relationship : I hava buy_material table and buying_material_item table , buy_material table include agent_id and date , buying_material_item table include material_id, material_price and quantity .

In my BuyMaterialController store function I want to create buymaterial

In there I want to insert value like this

{ "counter_agency_id":1, "date":"2021-07-28", "items":[ {"material_id":1,"material_price":1000,"quantity":5} ] }

but in my buy_material table and buying_material_item table has no relation , but i wanto insert in one request

public function store(BuyMaterialRequest $request) {

    $buyMaterial = BuyMaterial::create($request->all());

    $buyingMaterialItems = DB::table('materials')
        ->join('buying_material_item', 'materials.id', '=', 'buying_material_item.material_id')
        ->select('materials.*', 'buying_material_item.quantity')
        ->get();

	$buyMaterial = attach($buyingMaterialItems);

    

    return response()->json(['created'=>'Successfully Created']);
}
0 likes
5 replies
asadbekDev's avatar

I want to create in my store function

{ "counter_agency_id":1, "date":"2021-07-28", "items":[ {"material_id":1,"material_price":1000,"quantity":5} ] }

i could not attach "items":[ {"material_id":1,"material_price":1000,"quantity":5} ] in my buying_material_item table

asadbekDev's avatar

i wanto insert in one request insert values in two tables

public function store(BuyMaterialRequest $request) { $buyMaterial = BuyMaterial::create($request->all());

    $items = DB::table('materials')
        ->join('buying_material_item', 'materials.id', '=', 'buying_material_item.material_id')
        ->select('materials.*', 'buying_material_item.quantity')
        ->get();    


    $buyMaterial->buyingMaterialItem()->attach($items);

    return response()->json(['created'=>'Successfully Created']);
}
asadbekDev's avatar
asadbekDev
OP
Best Answer
Level 2

public function store(BuyMaterialRequest $request) { $buyMaterial = BuyMaterial::create($request->all());

    $buyMaterialItems = collect($request->items)->map(fn($buyMaterialItem) => [
        "material_id" => $buyMaterialItem['material_id'],
        "price"=>$buyMaterialItem['price'],
        "quantity" => $buyMaterialItem['quantity'],
        "total"=>$buyMaterialItem['price']*$buyMaterialItem['quantity']
    ]);

    $totalPrice = $buyMaterialItems->sum('total');

    $buyMaterial->materials()->attach($buyMaterialItems);

    return response()->json(['created'=>'Successfully Created','totalPrice'=>$totalPrice]);
}

Please or to participate in this conversation.