2013-08-24 6 views
13

मैं माईएसक्यूएल के साथ लैरवेल 4 का उपयोग कर रहा हूं और मैं जानना चाहता हूं कि रिकॉर्ड त्रुटियों को अद्यतन, अद्यतन या हटाए जाने पर संभावित त्रुटियों को कैसे नियंत्रित किया जाए। उदाहरण के लिए, यदि मैं निम्नानुसार अद्यतन करता हूं:कैसे पता चले कि लैरवेल 4 में कोई क्वेरी विफल हो जाती है?

DB::table('user')->where('id', $id)->update($userdata); 

मुझे यह कैसे पता चलेगा कि यह क्वेरी विफल हो जाती है? मैंने अपवाद को पकड़ने और उससे निपटने के लिए एक कोशिश-पकड़ ब्लॉक का उपयोग करने का विचार किया लेकिन मैं जानना चाहता हूं कि लैरवेल विशिष्ट विधि मौजूद है या नहीं।

+1

जब कोई क्वेरी पीडीओएक्सप्शन विफल हो जाती है तो उसे फेंक दिया जाएगा। आप इसे पकड़ सकते हैं –

+1

@RubensMariuzzo, वास्तव में नहीं। लैरवेल [इसे ओवरराइड करता है] (https://github.com/laravel/framework/blob/master/src/Illuminate/Database/Connection.php#L528) और इसके बजाय नियमित 'अपवाद' फेंकता है। – rmobis

+0

@Raphael_, आप सही हैं, सुधार के लिए धन्यवाद। –

उत्तर

33

इसे एक कोशिश पकड़ ब्लॉक में डाल दिया।

try { 

    DB::table('user')->where('id', $id)->update($userdata); 
}catch(\Exception $e){ 
    //Do something when query fails. 
} 

इसके अलावा,

DB::insert() रिटर्न बूलियन।

DB::update() रिटर्न बूलियन

DB::delete() रिटर्न बूलियन

DB::insertGetId() वापसी पिछले डाला आईडी।

आप मूल्य के आधार पर अपने अनुवर्ती कोड लिख सकते हैं।

पीएस उपरोक्त त्रुटियों के लिए नहीं हैं, लेकिन सिर्फ यह जानने के लिए कि आपकी क्वेरी प्रभावित हुई है कुछ पंक्तियां या नहीं।

+1

धन्यवाद! हाँ, मुझे लगता है कि कोशिश-पकड़ का उपयोग करना है, लेकिन मैं यह सुनिश्चित करना चाहता हूं कि लार्वेल प्रत्यक्ष विधि प्रदान करता है या नहीं। Althoug अगर वह विधियां एक बुलियन लौटती हैं कि पंक्तियों को प्रभावित किया गया था जो मेरे लिए पर्याप्त है। 'पकड़' ब्लॉक में – Darwing

+0

'वापसी झूठी '। इस तरह मैंने इसे बूलियन बनाया;) – itachi

+0

क्या हम पीडीओएक्सप्शन को पकड़ सकते हैं क्योंकि @ रूबेन्स ने इस सवाल पर टिप्पणी की थी? – sangam

संबंधित मुद्दे