2017-10-07 12 views
5

मुझे जानकर उत्सुकता थी, अगर लार्वेल भाषण पंक्ति को अद्यतन करने पर केवल एक प्रश्न चलाता है। तो मैंने कोशिश की निम्नलिखितलैरवेल एलोक्वेंट अपडेट पर दो प्रश्नों को चलाता है?

Route::get('/cli', function(){ 
    DB::enableQueryLog(); 

    $client = Client::findOrFail(1); 
    $client->first_name = 'Noob'; 
    $client->save(); 
    return response()->json([ 
     'client' => $client->first_name, 
     'query' => DB::getQueryLog() 
    ], 200); 
}); 

यह मैं निम्नलिखित परिणाम

{ 
    "client": "Noob", 
    "query": [{ 
       "query": "select * from `clients` where `clients`.`id` = ? limit 1", 
    "bindings": [ 
      1 
     ], 
    "time": 0.71 
}, 
{ 
     "query": "update `clients` set `first_name` = ?, `updated_at` = ? where `id` = ?", 
     "bindings": [ 
      "Noob", 
      "2017-10-07 12:03:05", 
      1 
     ], 
     "time": 3.36 
} 
] 
} 

तो मैं डीबी फसाड का उपयोग कर के बारे में सोचा दे दी है।

Route::get('/cli', function(){ 
    DB::enableQueryLog(); 
$client = DB::select("update clients set first_name= 'Admin test' WHERE id=1"); 

    return response()->json([ 
     'client' => $client->first_name, 
     'query' => DB::getQueryLog() 
    ], 200); 
}); 

और परिणाम

{ 
"client": [], 
"query": [ 
{ 
"query": "update clients set first_name= 'Admin test' WHERE id=1", 
"bindings": [], 
"time": 3.2 
} 
] 
} 

यह एक केवल एक ही क्वेरी भाग गया, हालांकि यह क्लाइंट उदाहरण लौटे नहीं किया है। मेरा सवाल है, एक उच्च यातायात सर्वर के लिए जिस विधि या रणनीति का उपयोग करने की आवश्यकता है? क्या उपयोग करने के लिए वाक्प्रचार में कोई और बेहतर तकनीक या चाल है?

उत्तर

4

आप क्वेरी नीचे बदलने

$client = DB::select("update clients set first_name= 'Admin test' WHERE id=1"); 

को

$data=['first_name'=>'Admin test']; 
    Client::where('id', '=', 1)->update($data); 

वाक्पटु के लिए कर सकते हैं मैं पहली क्वेरी आप चयन कर रहे हैं में तो सही ढंग से अपने प्रश्न समझ में आ और फिर मान को अद्यतन करने, तो यह निश्चित रूप से दो प्रश्नों निष्पादित करेंगे । आपकी दूसरी विधि में आप डीबी से किसी भी विचार को नहीं ला रहे हैं, इसलिए यह पहले

+0

से अधिक तेज़ होगा। क्या डीबी :: चयन() स्पष्ट रूप से तेज़ है? –

+1

मुझे नहीं लगता कि इससे प्रदर्शन issue.in में बहुत अंतर आएगा। बड़े प्रश्न पूछने से यह तेजी से प्रदर्शन कर सकता है। एंजक्वेंट बहुत अधिक पठनीयता है – iCoders

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