web-dev-qa-db-fra.com

Comment insérer plusieurs lignes d'une même requête en utilisant eloquent / fluent

J'ai la requête suivante:

  $query = UserSubject::where('user_id', Auth::id())->select('subject_id')->get();

et comme prévu j'obtiens le résultat suivant:

[{"user_id":8,"subject_id":9},{"user_id":8,"subject_id":2}]

Est-il possible de copier le résultat ci-dessus dans ne autre table afin que ma table ressemble à ceci?

ID|user_id|subject_id
1 |8      |9
2 |8      |2

Le problème que j’ai, c’est que le $query peut s’attendre à n’importe quel nombre de lignes et ne sait donc pas exactement comment parcourir un nombre inconnu de lignes.

102
Billy

Il est très facile de faire une insertion en bloc dans Laravel en utilisant Eloquent ou le constructeur de requêtes.

Vous pouvez utiliser l'approche suivante.

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

Model::insert($data); // Eloquent approach
DB::table('table')->insert($data); // Query Builder approach

Dans votre cas, vous avez déjà les données dans la variable $query.

226
Kreshnik Hasanaj

en utilisant Eloquent

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

Model::insert($data);
13
Vishal Varshney