Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

एक इन्सर्ट बनाएं... Laravel . में स्टेटमेंट चुनें

एक प्रश्न में ऐसा करने का कोई तरीका नहीं है (जब तक कि आप Laravel 5.7 पर न हों), हालाँकि मैं एक ही मुद्दे पर आया था और यह सुनिश्चित करना चाहता था कि मैं QueryBuilder के साथ एक निश्चित चयन 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
 */
 $insertQuery = 'INSERT into user_debt_collection (email,dinero) '
                . $select->toSql();
    
 \DB::insert($insertQuery, $bindings);

लारवेल 5.7 अपडेट करें

Laravel 5.7.17 के अनुसार आप ->insertUsing() का उपयोग कर सकते हैं। देखें यहां ब्योरा हेतु। इसे इंगित करने के लिए @Soulriser धन्यवाद।

तो उपरोक्त क्वेरी इस तरह दिखेगी:

DB::table('user_debt_collection')->insertUsing(['email','dinero'], $select);


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. रेल 3 - शर्तों के साथ उत्सुक लोडिंग

  2. MySql एक साथ दो टेबल अपडेट करें

  3. MySQL में क्या मैं हटाए जाने के बाद हटाई गई पंक्तियों को वापस कर सकता हूं?

  4. MySQL में मौजूदा कॉलम में शून्य बाधा कैसे जोड़ें?

  5. खराब तर्क # 1 से 'आईपेयर' (टेबल अपेक्षित, बूलियन मिला)