SarkariResultess QA Bank

Laravel DB Transaction me Order aur Order Items ko safely save kaise karein?

Laravel Published 25 Sept 2026 1 Views Verified

Ek e-commerce application me order create hone ke baad multiple order items insert karne hain.

Requirement hai ki agar kisi ek item ko save karte waqt exception aaye, to order bhi save nahi rehna chahiye.

$order = Order::create($data);

foreach ($items as $item) {
    $order->items()->create($item);
}

Is workflow ko transaction-safe banane ke liye kaunsa implementation appropriate hai?

Sarkari Result QA Bank
Editorially reviewed exam information

Answer & Explanation

5 Answers
Verified Correct Answer

A. DB::transaction() ke andar order aur items save karna

DB::transaction(function () use ($data, $items) {

    $order = Order::create($data);

    foreach ($items as $item) {
        $order->items()->create($item);
    }

});
Additional Explanation

Ye correct approach hai. Transaction ke andar related database operations ko execute karne se application unhe ek atomic unit ke roop me handle kar sakti hai.

Agar transaction ke andar exception occur hoti hai, Laravel transaction rollback kar sakta hai, jisse partial database state avoid hoti hai. Order aur uske items jaise dependent operations ke liye ye important pattern hai.

Verified

B. Pehle order save karein aur transaction kabhi use na karein

$order = Order::create($data);

foreach ($items as $item) {
    $order->items()->create($item);
}
Additional Explanation

Ye code successful case me kaam kar sakta hai, lekin partial failure ke against atomicity provide nahi karta. Agar third item fail ho gaya, to pehle ke changes database me reh sakte hain.

Verified

C. Har item ke liye alag application restart karna

foreach ($items as $item) {
    app()->terminate();
}
Additional Explanation

Application restart ya termination database consistency provide nahi karti. Transaction ka purpose database operations ko atomic boundary me handle karna hai.

Verified

D. Sabhi inserts Blade file me perform karna

@php
Order::create($data);
@endphp
Additional Explanation

Database write operations ko Blade template me rakhna inappropriate hai. Isse presentation aur persistence responsibilities mix hoti hain aur transaction management bhi poorly structured ho jata hai.

Verified

F. Transaction ki jagah sirf cache use karna

Cache::put('order', $data);
Additional Explanation

Cache persistence transaction ka replacement nahi hai. Cache temporary or reusable values ke liye hota hai, jabki transaction database consistency ke liye use hoti hai.