kzen.dev
  • Întrebări
  • Tag-uri
  • Utilizatori
Notificări
Recompense
Înregistrare
După înregistrare, veți primi notificări despre răspunsurile și comentariile la întrebările DVS.
Logare
Dacă aveţi deja un cont, autentificaţi-vă pentru a verifica notificările noi.
Aici vor fi recompensele pentru întrebările, răspunsurile și comentariile adăugate sau modificate.
Mai mult
Sursă
Editează
 phoenixwizard
phoenixwizard
Question

Vrac de Inserție în Laravel folosind elocvent ORM

Cum putem efectua vrac baza de date inserții în Laravel folosind Elocvent ORM?

Vreau pentru a realiza acest lucru în Laravel: https://stackoverflow.com/a/10615821/600516 dar primesc urmatoarea eroare.

SQLSTATE[HY093]: Invalid parametru număr: amestec de nume și parametrii de poziție.

134 2012-10-03T06:16:16+00:00 10
 Community
Community
Întrebarea editată 23 mai 2017 в 12:10
Programare
database
php
laravel
eloquent
Solution / Answer
 GTF
GTF
27 noiembrie 2012 в 11:54
2012-11-27T23:54:16+00:00
Mai mult
Sursă
Editează
#17359296

Puteți folosi doar Elocvent::insert().

De exemplu:

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

Coder::insert($data);
268
0
Eslam  Salem Mahmoud
Eslam Salem Mahmoud
26 octombrie 2014 в 5:01
2014-10-26T05:01:21+00:00
Mai mult
Sursă
Editează
#17359297

Ne putem actualiza GTF răspuns pentru a actualiza cu ușurință marcajele de timp

$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);

Update: pentru a simplifica data putem folosi de carbon ca @Pedro Moreira a sugerat

$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);

UPDATE2: pentru laravel 5 , folosesc updated_at "în loc de" 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);
 Banana
Banana
Răspuns editat 6 aprilie 2017 в 6:05
67
0
 Alex
Alex
25 ianuarie 2017 в 7:18
2017-01-25T19:18:26+00:00
Mai mult
Sursă
Editează
#17359300

Pentru oricine citește acest lucru, a verifica afară createMany() metoda.

/**
 * Create a Collection of new instances of the related model.
 *
 * @param  array  $records
 * @return \Illuminate\Database\Eloquent\Collection
 */
public function createMany(array $records)
{
    $instances = $this->related->newCollection();

    foreach ($records as $record) {
        $instances->push($this->create($record));
    }

    return $instances;
}
Emile Bergeron
Emile Bergeron
Răspuns editat 11 octombrie 2017 в 8:42
27
0
imal  hasaranga perera
imal hasaranga perera
4 iunie 2017 в 12:12
2017-06-04T12:12:59+00:00
Mai mult
Sursă
Editează
#17359302

Acest lucru este cum o faci în mai Elocvent mod,

    $allintests = [];
    foreach($intersts as $item){ //$intersts array contains input data
        $intestcat = new User_Category();
        $intestcat->memberid = $item->memberid;
        $intestcat->catid= $item->catid;
        $allintests[] = $intestcat->attributesToArray();
    }
    User_Category::insert($allintests);
17
0
 srmilon
srmilon
23 decembrie 2017 в 7:28
2017-12-23T19:28:18+00:00
Mai mult
Sursă
Editează
#17359304

Am cautat de multe ori pentru că, în cele din urmă folosit personalizat timestamp ca mai jos:

$now = Carbon::now()->toDateTimeString();
Model::insert([
    ['name'=>'Foo', 'created_at'=>$now, 'updated_at'=>$now],
    ['name'=>'Bar', 'created_at'=>$now, 'updated_at'=>$now],
    ['name'=>'Baz', 'created_at'=>$now, 'updated_at'=>$now],
    ..................................
]);
3
0
 sumit
sumit
16 februarie 2019 в 3:16
2019-02-16T03:16:14+00:00
Mai mult
Sursă
Editează
#17359306

Elocvent::insert este soluția corectă, dar obiceiul de actualizare marcajele de timp, astfel încât să puteți face ceva de genul de mai jos

 $json_array=array_map(function ($a) { 
                        return array_merge($a,['created_at'=> 
                                            Carbon::now(),'updated_at'=> Carbon::now()]
                                           ); 
                                     }, $json_array); 
 Model::insert($json_array);

Ideea este de a adăuga created_at și updated_at pe întreaga gamă înainte de a face introduce

 sumit
sumit
Răspuns editat 18 februarie 2019 в 10:39
1
0
 justnajm
justnajm
16 iunie 2019 в 9:00
2019-06-16T09:00:48+00:00
Mai mult
Sursă
Editează
#17359308

Pentru categoria relațiilor de inserție am dat peste aceeași problemă și nu a avut nici o idee, cu excepția faptului că în elocvent model am folosit Auto() pentru a avea o instanță din aceeași clasă în foreach pentru a înregistra mai multe salvează și grabing id-uri.

foreach($arCategories as $v)
{                
    if($v>0){
        $obj = new Self(); // this is to have new instance of own
        $obj->page_id = $page_id;
        $obj->category_id = $v;
        $obj->save();
    }
}

fără "$obj = new Auto()" se salvează numai singură înregistrare (când $obj fost de $asta)

0
0
Francisco Daniel
Francisco Daniel
21 septembrie 2017 в 11:28
2017-09-21T23:28:23+00:00
Mai mult
Sursă
Editează
#17359303

Poate o mai Laravel mod de a rezolva această problemă este de a utiliza o colecție și bucla se introduce cu modelul profitând de marcajele de timp.

<?php

use App\Continent;
use Illuminate\Database\Seeder;

class InitialSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        collect([
            ['name' => 'América'],
            ['name' => 'África'],
            ['name' => 'Europa'],
            ['name' => 'Asia'],
            ['name' => 'Oceanía'],
        ])->each(function ($item, $key) {
            Continent::forceCreate($item);
        });
    }
}

EDIT:

Îmi pare rău pentru neînțelegere. Pentru vrac inserarea acest lucru ar putea ajuta și poate cu aceasta, puteți face o bună semănători și de a le optimiza un pic.

<?php

use App\Continent;
use Carbon\Carbon;
use Illuminate\Database\Seeder;

class InitialSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        $timestamp = Carbon::now();
        $password = bcrypt('secret');

        $continents = [
            [
                'name' => 'América'
                'password' => $password,
                'created_at' => $timestamp,
                'updated_at' => $timestamp,
            ],
            [
                'name' => 'África'
                'password' => $password,
                'created_at' => $timestamp,
                'updated_at' => $timestamp,
            ],
            [
                'name' => 'Europa'
                'password' => $password,
                'created_at' => $timestamp,
                'updated_at' => $timestamp,
            ],
            [
                'name' => 'Asia'
                'password' => $password,
                'created_at' => $timestamp,
                'updated_at' => $timestamp,
            ],
            [
                'name' => 'Oceanía'
                'password' => $password,
                'created_at' => $timestamp,
                'updated_at' => $timestamp,
            ],
        ];

        Continent::insert($continents);
    }
}
Francisco Daniel
Francisco Daniel
Răspuns editat 18 octombrie 2017 в 3:40
-1
0
Nikunj K.
Nikunj K.
27 august 2016 в 9:32
2016-08-27T09:32:42+00:00
Mai mult
Sursă
Editează
#17359299
$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 este modelul meu nume. Acest lucru va reveni "adevărat" dacă se introduce cu succes altceva "false".

-1
0
Alexandre Possebon
Alexandre Possebon
14 iunie 2019 в 5:43
2019-06-14T17:43:52+00:00
Mai mult
Sursă
Editează
#17359307

REZOLVAT PROBLEMA ............. ALTER TABLE PENTRU A MIGRA...

$table->timestamp('created_at')->nullable()->useCurrent();

UȘOR

Schema::create('spider_news', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->string('source')->nullable();
            $table->string('title')->nullable();
            $table->string('description')->nullable();
            $table->string('daterss')->nullable();

            $table->timestamp('created_at')->nullable()->useCurrent();
            $table->timestamp('update_at')->nullable()->useCurrent();
        });
-4
0
Comunități asemănătoare 2
PHP România, Moldova
PHP România, Moldova
121 utilizatori
Vorbim despre Laravel, Symfony, Yii, WP, OpenCart... @js_ro @python_ro @seo_ro @Romania_Bot Offtop: @holywars_ro https://github.com/js-ro/it-telegram
Deschide telegram
LARAVEL RO
LARAVEL RO
6 utilizatori
The PHP Framework for Web Artisans
Deschide telegram
Adăugati o întrebare
Categorii
Toate
Tehnologii
Cultură
Viață / Artă
Stiință
Profesii
Afaceri
Utilizatori
Toate
Nou
Populare
1
Daniel Gogov
Înregistrat 2 zile în urmă
2
工藤 芳則
Înregistrat 1 săptămână în urmă
3
Ирина Беляева
Înregistrat 1 săptămână în urmă
4
Darya Arsenyeva
Înregistrat 2 săptămâni în urmă
5
anyta nuam-nuam (LapuSiK)
Înregistrat 2 săptămâni în urmă
DE
ES
ID
JA
KO
RO
RU
TR
© kzen.dev 2023
Sursă
stackoverflow.com
în cadrul licenței cc by-sa 3.0 cu atribuire