سؤال

كيف يمكننا إجراء عمليات إدراج مجمعة لقاعدة البيانات في Laravel باستخدام Eloquent ORM؟

أريد تحقيق ذلك في Laravel: https://stackoverflow.com/a/10615821/600516لكنني أتلقى الخطأ التالي.

حالة SQL[HY093]:رقم المعلمة غير صالح:المعلمات المسماة والموضعية المختلطة.

هل كانت مفيدة؟

المحلول

يمكنك فقط استخدام Eloquent::insert().

على سبيل المثال:

$data = array(
    array('name'=>'Coder 1', 'rep'=>'4096'),
    array('name'=>'Coder 2', 'rep'=>'2048'),
    //...
);

Coder::insert($data);

نصائح أخرى

يمكننا تحديث إجابة GTF لتحديث الطوابع الزمنية بسهولة

$data = array(
    array(
        'name'=>'Coder 1', 'rep'=>'4096',
        'created_at'=>date('Y-m-d H:i:s'),
        'modified_at'=> date('Y-m-d H:i:s')
       ),
    array(
         'name'=>'Coder 2', 'rep'=>'2048',
         'created_at'=>date('Y-m-d H:i:s'),
         'modified_at'=> date('Y-m-d H:i:s')
       ),
    //...
);

Coder::insert($data);

تحديث:لتبسيط التاريخ الذي يمكننا فيه استخدام الكربون كما اقترحPedro Moreira

$now = Carbon::now('utc')->toDateTimeString();
$data = array(
    array(
        'name'=>'Coder 1', 'rep'=>'4096',
        'created_at'=> $now,
        'modified_at'=> $now
       ),
    array(
         'name'=>'Coder 2', 'rep'=>'2048',
         'created_at'=> $now,
         'modified_at'=> $now
       ),
    //...
);

Coder::insert($data);

التحديث 2:بالنسبة لارافيل 5، استخدم updated_at بدلاً من modified_at

$now = Carbon::now('utc')->toDateTimeString();
$data = array(
    array(
        'name'=>'Coder 1', 'rep'=>'4096',
        'created_at'=> $now,
        'updated_at'=> $now
       ),
    array(
         'name'=>'Coder 2', 'rep'=>'2048',
         'created_at'=> $now,
         'updated_at'=> $now
       ),
    //...
);

Coder::insert($data);

إلى كل من يقرأ هذا، تحقق من أسلوب createMany() .

giveacodicetagpre.

هذه هي الطريقة التي تقوم بها بها بطريقة مزيدة من البلاغة،

giveacodicetagpre.

بحثت عدة مرات لذلك، وأخيرا استخدم Guard Customodicetagcode مثل أدناه:

giveacodicetagpre.

Eloquent::insert هو الحل المناسب ولكنه لن يقوم بتحديث الطوابع الزمنية، حتى تتمكن من فعل شيء مثل أدناه

giveacodicetagpre.

الفكرة هي إضافة CREID_AT وتحديثها على الصفيف بأكملها قبل إجراء إدراج

للحصول على إدراج علاقات الفئة التي صادفتها نفس المشكلة ولم يكن لدي أي فكرة، إلا أنه في نموذجي البليغة استخدمت النفس () أن يكون لديك مثيل من نفس الفئة في foreach لتسجيل محفظات متعددة ومحاماة.

giveacodicetagpre.

بدون "$ obj= new self ()" فقط يحفظ سجل واحد (عندما كان $ OBJ كان $ هذا)

$start_date = date('Y-m-d h:m:s');        
        $end_date = date('Y-m-d h:m:s', strtotime($start_date . "+".$userSubscription['duration']." months") );
        $user_subscription_array = array(
          array(
            'user_id' => $request->input('user_id'),
            'user_subscription_plan_id' => $request->input('subscription_plan_id'),
            'name' => $userSubscription['name'],
            'description' => $userSubscription['description'],
            'duration' => $userSubscription['duration'],
            'start_datetime' => $start_date,
            'end_datetime' => $end_date,
            'amount' => $userSubscription['amount'],
            'invoice_id' => '',
            'transection_datetime' => '',
            'created_by' => '1',
            'status_id' => '1', ),
array(
            'user_id' => $request->input('user_id'),
            'user_subscription_plan_id' => $request->input('subscription_plan_id'),
            'name' => $userSubscription['name'],
            'description' => $userSubscription['description'],
            'duration' => $userSubscription['duration'],
            'start_datetime' => $start_date,
            'end_datetime' => $end_date,
            'amount' => $userSubscription['amount'],
            'invoice_id' => '',
            'transection_datetime' => '',
            'created_by' => '1',
            'status_id' => '1', )
        );
        dd(UserSubscription::insert($user_subscription_array));

UserSubscription هو اسم النموذج الخاص بي.سيعيد هذا "صحيح" إذا تم إدراج "خطأ" بنجاح.

ربما طريقة أكثر لارفيل لحل هذه المشكلة هي استخدام مجموعة وحلقة إدراجها مع النموذج الذي يستفيد من الطوابع الزمنية.

giveacodicetagpre.

تحرير:

آسف لسوء الفهم الخاص بي.بالنسبة إلى إدراج هذا السائبة يمكن أن يساعد ذلك وربما مع هذا يمكنك أن تصنع البذور الجيدة وتحسينها قليلا.

giveacodicetagpre.

مشكلة حل ............. تغيير الجدول للترحيل ...

giveacodicetagpre.

سهل

giveacodicetagpre.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top