2014-09-24 7 views
5

मैं क्या कर रहा था:सुवक्ता बड़े पैमाने पर डालने, पर नकली चाबी अद्यतन

$data = [ 
     ['amodule'=>'amodule', 'akey'=>'first_example', 'avalue'=>'4096', 'created_at'=>'2014-09-21'], 
     ['amodule'=>'amodule2', 'akey'=>'sec_example', 'avalue'=>'4097', 'created_at'=>'2014-09-22'], 
     ['amodule'=>'amodule2', 'akey'=>'sec_example', 'avalue'=>'4097', 'created_at'=>'2014-09-22'], 
    ]; 

    Models\Snapshot::insert($data); 

बस एक बड़े पैमाने पर डालने प्रदर्शन। अब मैं इसे एक ऑन डिप्लिकेट कुंजी जोड़ना चाहता हूं। इसे कैसे करें पर कोई विचार है? या डुप्लिकेट को अनदेखा करने के लिए सूची में?

अग्रिम धन्यवाद ...

उत्तर

1

सुवक्ता इस समय इस का समर्थन नहीं करता, तो आप एक कच्चे क्वेरी के रूप में यह लिखने के लिए होगा।

// generates (?,?,?,?),(?,?,?,?),(?,?,?,?),(?,?,?,?) 
$valueString = implode(',', array_fill(0, count($data), '(' . implode(',', array_fill(0, count($data[0]), '?')) . ')')); 
$values = []; 

// Flattens the array 
foreach($data as $row) { 
    foreach($row as $value) { 
     $values[] = $value; 
    } 
} 

// Perform the insert 
\DB::insert(
    "insert into `snapshots` (`amodule`, `akey`, `avalue`, `created_at`) values {$values} on duplicate key update", 
    $values 
); 

ध्यान रखें कि on duplicate key update के लिए आदेश को गति प्रदान करने में डाला गया मूल्यों के कम से कम एक प्राथमिक कुंजी या एक अद्वितीय कुंजी होना आवश्यक है।

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