Как вставить несколько строк из одного запроса, используя eloquent / fluent

54

У меня есть следующий запрос:

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

и, как и ожидалось, я получаю следующий результат:

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

Есть ли способ копирования указанного результата в другую таблицу, чтобы моя таблица выглядела так:

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

Проблема заключается в том, что $query может ожидать любое количество строк, поэтому я не уверен, как выполнять итерацию по неизвестному числу строк.

Теги:
eloquent

2 ответа

114
Лучший ответ

Очень просто сделать массовую вставку в Laravel, используя Eloquent или построитель запросов.

Вы можете использовать следующий подход.

$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

В вашем случае у вас уже есть данные в переменной $query.

  • 0
    Я пробовал это, но, к сожалению, он распознает мой результат как объект, а не массив
  • 5
    Используйте метод -> toArray () для коллекции объектов.
Показать ещё 9 комментариев
0

с использованием Eloquent

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

Model::insert($data);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню