programing

웅변/유동어를 사용하여 단일 쿼리에서 여러 행을 삽입하는 방법

yoursource 2022. 10. 2. 12:23
반응형

웅변/유동어를 사용하여 단일 쿼리에서 여러 행을 삽입하는 방법

다음 질문이 있습니다.

  $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는 임의의 수의 행을 상정할 수 있기 때문에 알 수 없는 수의 행을 반복하는 방법을 알 수 없습니다.

Larabel에서 Archent 또는 쿼리 빌더를 사용하여 대량 삽입을 하는 것은 매우 간단합니다.

다음과 같은 방법을 사용할 수 있습니다.

$data = [
    ['user_id'=>'Coder 1', 'subject_id'=> 4096],
    ['user_id'=>'Coder 2', 'subject_id'=> 2048],
    //...
];

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

고객님의 경우 이미 데이터 내에$query변수.

웅변 사용

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

Model::insert($data);

쿼리 빌더가 있든 없든 Larabel에서 대량 삽입을 하는 것은 매우 쉽습니다.다음과 같은 공식적인 방법을 사용할 수 있습니다.

Entity::upsert([
    ['name' => 'Pierre Yem Mback', 'city' => 'Eseka', 'salary' => 10000000],
    ['name' => 'Dial rock 360', 'city' => 'Yaounde', 'salary' => 20000000],
    ['name' => 'Ndibou La Menace', 'city' => 'Dakar', 'salary' => 40000000]
], ['name', 'city'], ['salary']);

언급URL : https://stackoverflow.com/questions/29723865/how-to-insert-multiple-rows-from-a-single-query-using-eloquent-fluent

반응형