하나의 테이블에서 복수의 레코드를 추가해야 하는 경우, 미리 데이터셋을 만들어 놓은 뒤 foreach 로 돌려가면서 insert 하면 한 번에 여러 컬럼을 넣을 수 있다.
현재 프로젝트에서는 고객정보를 등록하면 고객이 사용하는 마스터의 최신 레코드 인덱스들을 관리하는 채번 테이블에 마스터 별로 레코드를 생성할 필요가 있었는데 다음과 같이 해결했다.
> CustomerController.php
|
public function add()
{
// 다른 코드는 생략...
if($this->Masters->exists(['customer_idx' => $customer_idx])) // 마스터 관리하는 채번 테이블에 고객이 존재하나 확인
{
$this->Flash->error(__('해당 고객번호가 존재하므로 채번 테이블에 레코드 생성 실패했습니다'));
}
else
{
// 해당 테이블에 인서트 할 정보를 미리 정의하는 부분
$master_temp = [
[
'customer_idx' => $customer_idx,
'master_type' => 'SC',
'current_idx' => 0,
],
// 필요한 정보를 위와 같이 정의해서 정렬, 여러 개 가능
];
// Master_index에 레코드를 추가하는 처리
$query = $this->Masters->query();
$query->insert(['customer_idx','master_type','current_idx']); // 컬럼명은 위에 정의한 데이터와 일치시킴
foreach ($master_temp as $master) {
$query->values($master);
}
$query->execute();
$this->Flash->success(__('성공적으로 추가되었습니다.'));
}
// 다른 코드는 생략
}
|
솔까말 별로 어려운 내용은 아닌데 걍 내가 실력이 딸려서 그래 쿨럭
댓글
댓글 쓰기