2014-08-27 8 views
12

में स्टेटमेंट का चयन करें मुझे इस क्वेरी को लार्वेल के लिए कनवर्ट करने की आवश्यकता है और मुझे एक सम्मिलित करने की कोशिश करने में समस्याएं हैं ... लैरवेल के एलोक्वांट ओआरएम, या क्वेरीज़ का उपयोग करके स्टेटमेंट का चयन करें। मुझे यकीन नहीं है कि मैं इस प्रश्न को बनाने के बारे में कैसे जाऊंगा।एक सम्मिलित करें ... लार्वेल

Insert into Demand (Login, Name, ApptTime, Phone, Physician, Location, FormatName, FormatDate, FormatTime, ApptDate, FormatPhone, cellphone) 
Select Login, Name, ApptTime, Phone, Physician, Location, FormatName, FormatDate, FormatTime, ApptDate, FormatPhone, cellphone from " . [dbname] . " 
    Where " . $where_statement 

लैरवेल के ओआरएम का उपयोग करके इस क्वेरी को बनाना संभव कैसे है?

संपादित करें: मुझे यकीन है कि अगर यह स्पष्ट है नहीं कर रहा हूँ, लेकिन मैं, 1 क्वेरी के मामले में सोच रहा हूँ की तरह वे यहाँ कर http://dev.mysql.com/doc/refman/5.0/en/insert-select.html

+0

कृपया जाना

तो तुम क्या कर सकते हैं, चीजों को आधा क्या साफ रखने के लिए और कार्यक्षमता जो पहले एक का चयन करें बयान का निर्माण किया है, पुन: उपयोग करने के लिए इस है प्रलेखन के माध्यम से, यह अधिक सहायक हो सकता है: http://laravel.com/docs/eloquent –

+0

मैं प्रलेखन के माध्यम से किया गया है, और विभिन्न श्रृंखलाओं की कोशिश की है। लेकिन मुझे अभी भी यकीन नहीं है कि इसे एक क्वेरी बनाम 2 के रूप में कैसे बनाया जाए। – jamadri

+0

एलोक्वेंट वास्तव में इस तरह की चीजों का ख्याल रखने के लिए नहीं है। आप सिर्फ 'डीबी :: कथन() 'के अंदर क्वेरी डाल सकते हैं। – user3158900

उत्तर

26

एक प्रश्न में ऐसा करने का कोई तरीका नहीं है, हालांकि मैं एक ही मुद्दे पर आया और यह सुनिश्चित करना चाहता था कि मैं क्वेरीब्यूल्डर के साथ एक निश्चित चयन I का उपयोग कर रख सकूं।

/** 
* Wherever your Select may come from 
**/ 
$select = User::where(...) 
        ->where(...) 
        ->whereIn(...) 
        ->select(array('email','moneyOwing')); 
/** 
* get the binding parameters 
**/ 
$bindings = $select->getBindings(); 
/** 
* now go down to the "Network Layer" 
* and do a hard coded select, Laravel is a little 
* stupid here 
*/ 
$insertQuery = 'INSERT into user_debt_collection (email,dinero) ' 
       . $select->toSql(); 

\DB::insert($insertQuery, $bindings); 
+0

लैरवेल 5.3 के लिए भी सही काम करता है – Prashant

+0

यह वास्तव में कमाल है। – caro

0

सबसे पहले, आप Demand के लिए एक मॉडल बनाने की आवश्यकता होगी, तो तो आप उपयोग कर सकते हैं:

$demand = new Demand; 
$demand->Login = $login; 
$demand->Name = $name; 
[...] 
$demand->save(); // <~ this is your "insert" statement 
$id = $demand->id; 

फिर अपने चयन बयान आप इन विकल्पों के लिए इसी तरह कुछ कर सकते हैं के लिए:

$demand = Demand::find($id); // will be similar to: SELECT * FROM Demand WHERE `id` = '$id'; 
$demand = Demand::where('id', $id)->get(); //same as above 
$demand = Demand::where('id', $id)->get(array('Login', 'Name')); // will be similar to: SELECT `Login`, `Name` FROM Demand WHERE `id` = '$id'; 

में एक बहुत अधिक जानकारी नहीं है मैनुअल here और here

+0

चयन कथन सम्मिलित करने का हिस्सा है। मैं दस्तावेज के माध्यम से रहा हूं लेकिन मुझे यह नहीं दिख रहा है कि ऐसा कुछ कैसे करें: http://dev.mysql.com/doc/refman/5.0/en/insert-select.html क्या कोई रास्ता नहीं है Laravel में एक प्रश्न का उपयोग कर ऐसा करते हैं? मुझे पता है कि मैं इसे 2 में कैसे करूंगा, लेकिन ऐसा करने में एक मिनट लगते हैं। मैं सोच रहा था कि क्या यह एक प्रश्न बनाने के लिए पहले से ही बनाया गया था। – jamadri

+0

मुझे नहीं लगता कि आप इसे एलोक्वेंट ओआरएम के भीतर कर सकते हैं ... लेकिन मैं गलत हो सकता है –

+0

मैं इस सवाल को लेकर एक रास्ता खोजने में सक्षम नहीं हूं। – jamadri

8

आप उपयोग कर सकते हैं:

DB::insert("insert into contacts(contact_id,contact_type,account_id,created_at,updated_at) select f.id,'App\\Friend',f.account_id,f.created_at,f.updated_at from friends as f where f.id=?",[16]); 
संबंधित मुद्दे