tp 5.1 프레임 워 크 데이터베이스 에서 흔히 볼 수 있 는 조작 상세 설명[추가,삭제,업데이트,조회]
tp 5.1--데이터베이스 추가 작업
Db 클래스
insert
방법 으로 데이터베이스 에 데 이 터 를 제출 합 니 다.
$data = ['foo' => 'bar', 'bar' => 'foo'];
Db::name('user')->insert($data);
insert
방법 으로 데 이 터 를 추가 하여 성공 적 으로 추 가 된 항목 수 를 성공 적 으로 되 돌려 줍 니 다.일반적인 상황 은 1 을 되 돌려 줍 니 다.또는
data
방법 으로 배합insert
하여 사용한다.
$data = ['foo' => 'bar', 'bar' => 'foo'];
Db::name('user')
->data($data)
->insert();
데이터 시트 에 foo 나 bar 필드 가 없 으 면 이상 을 던 집 니 다.이상 을 던 지지 않 으 려 면 다음 방법 을 사용 하 세 요.
$data = ['foo' => 'bar', 'bar' => 'foo'];
Db::name('user')->strict(false)->insert($data);
존재 하지 않 는 필드 의 값 은 바로 버 려 집 니 다.my sql 데이터베이스 라면 쓰기
replace
를 지원 합 니 다.예 를 들 어:
$data = ['foo' => 'bar', 'bar' => 'foo'];
Db::name('user')->insert($data, true);
데 이 터 를 추가 한 후 새로 추 가 된 데 이 터 를 되 돌려 주 는 홈 키 가 필요 하 다 면insertGetId
방법 으로 데 이 터 를 추가 하고 홈 키 값 을 되 돌려 줄 수 있 습 니 다.
$userId = Db::name('user')->insertGetId($data);
insertGetId
방법 으로 데 이 터 를 추가 하 는 데 성공 했다.여러 데이터 추가
여러 개의 데 이 터 를 추가 하여 Db 클래스
insertAll
방법 으로 추가 할 데 이 터 를 직접 입력 하면 됩 니 다.
$data = [
['foo' => 'bar', 'bar' => 'foo'],
['foo' => 'bar1', 'bar' => 'foo1'],
['foo' => 'bar2', 'bar' => 'foo2']
];
Db::name('user')->insertAll($data);
insertAll
방법 으로 데 이 터 를 추가 하 는 데 성공 한 항목 수 를 되 돌려 주 었 습 니 다.my sql 데이터베이스 라면 쓰기
replace
를 지원 합 니 다.예 를 들 어:
$data = [
['foo' => 'bar', 'bar' => 'foo'],
['foo' => 'bar1', 'bar' => 'foo1'],
['foo' => 'bar2', 'bar' => 'foo2']
];
Db::name('user')->insertAll($data, true);
데이터 추가데이터 추가
Db 클래스 의 insert 방법 으로 데이터베이스 에 데 이 터 를 제출 합 니 다.
$data = ['foo' => 'bar', 'bar' => 'foo'];
Db::name('user')->insert($data);
insert
방법 으로 데 이 터 를 추가 하여 성공 적 으로 추 가 된 항목 수 를 성공 적 으로 되 돌려 줍 니 다.일반적인 상황 은 1 을 되 돌려 줍 니 다.또는
data
방법 으로 배합insert
하여 사용한다.
$data = ['foo' => 'bar', 'bar' => 'foo'];
Db::name('user')
->data($data)
->insert();
데이터 시트 에 foo 나 bar 필드 가 없 으 면 이상 을 던 집 니 다.이상 을 던 지지 않 으 려 면 다음 방법 을 사용 하 세 요.
$data = ['foo' => 'bar', 'bar' => 'foo'];
Db::name('user')->strict(false)->insert($data);
존재 하지 않 는 필드 의 값 은 바로 버 려 집 니 다.my sql 데이터베이스 라면 쓰기
replace
를 지원 합 니 다.예 를 들 어:
$data = ['foo' => 'bar', 'bar' => 'foo'];
Db::name('user')->insert($data, true);
데 이 터 를 추가 한 후 새로 추 가 된 데 이 터 를 되 돌려 주 는 홈 키 가 필요 하 다 면insertGetId
방법 으로 데 이 터 를 추가 하고 홈 키 값 을 되 돌려 줄 수 있 습 니 다.
$userId = Db::name('user')->insertGetId($data);
insertGetId
방법 으로 데 이 터 를 추가 하여 데 이 터 를 추가 한 홈 키 를 성공 적 으로 되 돌려 주 었 습 니 다.여러 데이터 추가
여러 개의 데 이 터 를 추가 하여 Db 클래스
insertAll
방법 으로 추가 할 데 이 터 를 직접 입력 하면 됩 니 다.
$data = [
['foo' => 'bar', 'bar' => 'foo'],
['foo' => 'bar1', 'bar' => 'foo1'],
['foo' => 'bar2', 'bar' => 'foo2']
];
Db::name('user')->insertAll($data);
insertAll
방법 으로 데 이 터 를 추가 하 는 데 성공 한 항목 수 를 되 돌려 주 었 습 니 다.my sql 데이터베이스 라면 쓰기
replace
를 지원 합 니 다.예 를 들 어:
$data = [
['foo' => 'bar', 'bar' => 'foo'],
['foo' => 'bar1', 'bar' => 'foo1'],
['foo' => 'bar2', 'bar' => 'foo2']
];
Db::name('user')->insertAll($data, true);
사용 가능data
방법
$data = [
['foo' => 'bar', 'bar' => 'foo'],
['foo' => 'bar1', 'bar' => 'foo1'],
['foo' => 'bar2', 'bar' => 'foo2']
];
Db::name('user')->data($data)->insertAll();
대량으로 추가 할 데이터 필드 가 일치 하 는 지 확인 하 십시오.만약 에 대량으로 삽 입 된 데이터 가 비교적 많 으 면 분할 삽입 을 지정 할 수 있 고
limit
방법 으로 매번 삽 입 된 수량 제한 을 지정 할 수 있 습 니 다.
$data = [
['foo' => 'bar', 'bar' => 'foo'],
['foo' => 'bar1', 'bar' => 'foo1'],
['foo' => 'bar2', 'bar' => 'foo2']
...
];
// 100
Db::name('user')->data($data)->limit(100)->insertAll();
tp 5.1--데이터베이스 삭제 작업데이터 삭제
//
Db::table('think_user')->delete(1);
Db::table('think_user')->delete([1,2,3]);
//
Db::table('think_user')->where('id',1)->delete();
Db::table('think_user')->where('id','<',10)->delete();
마지막 으로 생 성 된 SQL 문 구 는 다음 과 같 습 니 다.
DELETE FROM `think_user` WHERE `id` = 1
DELETE FROM `think_user` WHERE `id` IN (1,2,3)
DELETE FROM `think_user` WHERE `id` = 1
DELETE FROM `think_user` WHERE `id` < 10
delete 방법 은 데이터 에 영향 을 주 는 항목 수 를 되 돌려 줍 니 다.0 을 삭제 하지 않 았 습 니 다.조건 없 이 호출
delete
방법 은 오 류 를 알려 줍 니 다.모든 데 이 터 를 삭제 해 야 한다 면 사용 할 수 있 습 니 다.
//
Db::name('user')->delete(true);
마지막 으로 생 성 된 SQL 문 구 는(표 의 모든 데 이 터 를 삭 제 했 습 니 다):
DELETE FROM `think_user`
일반적인 상황 에서 업무 데 이 터 는 실제 데 이 터 를 삭제 하 는 것 을 권장 하지 않 고 시스템 은 소프트 삭제 체 제 를 제공 합 니 다(모델 에서 소프트 삭 제 를 사용 하 는 것 이 더욱 편리 합 니 다).
// delete_time
Db::name('user')
->where('id', 1)
->useSoftDelete('delete_time',time())
->delete();
실제 생 성 된 SQL 문 구 는 다음 과 같 을 수 있 습 니 다UPDATE
.
UPDATE `think_user` SET `delete_time` = '1515745214' WHERE `id` = 1
useSoftDelete
방법 은 소프트 삭 제 를 사용 하고 소프트 삭제 필드 를 delete 로 지정 합 니 다.time,데 이 터 를 현재 시간 스탬프 로 기록 합 니 다.tp 5.1--데이터베이스 업데이트 작업
데이터 업데이트
Db::name('user')
->where('id', 1)
->update(['name' => 'thinkphp']);
실제 생 성 된 SQL 문 구 는 다음 과 같 습 니 다.
UPDATE `think_user` SET `name`='thinkphp' WHERE `id` = 1
update
방법 은 데이터 에 영향 을 주 는 항목 수 를 되 돌려 주 고 데이터 반환 0 을 수정 하지 않 았 습 니 다.업데이트 할 데 이 터 를 전송 하 는 데 사용
data
방법 을 지원 합 니 다.
Db::name('user')
->where('id', 1)
->data(['name' => 'thinkphp'])
->update();
update
방법 과data
방법 이 동시에 업데이트 데 이 터 를 전송 하면 합병 된다.데이터 에 홈 키 가 포함 되 어 있 으 면 바로 사용 할 수 있 습 니 다:
Db::name('user')
->update(['name' => 'thinkphp','id'=>1]);
실제 생 성 된 SQL 문 구 는 앞의 용법 과 같 습 니 다.
UPDATE `think_user` SET `name`='thinkphp' WHERE `id` = 1
데 이 터 를 업데이트 하려 면 SQL 함수 나 다른 필드 를 사용 해 야 합 니 다.다음 방법 을 사용 할 수 있 습 니 다.
Db::name('user')
->where('id',1)
->inc('read_time')
->dec('score',3)
->exp('name','UPPER(name)')
->update();
실제 생 성 된 SQL 구문:
UPDATE
`think_user`
SET
`read_time` = `read_time` + 1 ,
`score` = `score` - 3 ,
`name` = UPPER(name)
WHERE
`id` = 1
V 5.1.7+버 전 이후raw
방법 으로 데이터 업 데 이 트 를 지원 하여 배열 업데이트 에 적합 합 니 다.
Db::name('user')
->where('id', 1)
->update([
'name' => Db::raw('UPPER(name)'),
'score' => Db::raw('score-3'),
'read_time' => Db::raw('read_time+1')
]);
필드 값 업데이트
Db::name('user')
->where('id',1)
->setField('name', 'thinkphp');
마지막 으로 생 성 된 SQL 문 구 는 다음 과 같 을 수 있 습 니 다.
UPDATE `think_user` SET `name` = 'thinkphp' WHERE `id` = 1
setField
방법 은 데이터 에 영향 을 주 는 항목 수 를 되 돌려 주 고 데이터 필드 를 수정 하지 않 고 0 으로 되 돌려 줍 니 다.setInc
/setDec
방법 으로 한 필드 의 값 을 증가 하거나 줄 일 수 있 습 니 다(두 번 째 파 라 메 터 를 추가 하지 않 으 면 기본 걸음 길 이 는 1).
// score 1
Db::table('think_user')
->where('id', 1)
->setInc('score');
// score 5
Db::table('think_user')
->where('id', 1)
->setInc('score', 5);
// score 1
Db::table('think_user')
->where('id', 1)
->setDec('score');
// score 5
Db::table('think_user')
->where('id', 1)
->setDec('score', 5);
마지막 으로 생 성 된 SQL 문 구 는 다음 과 같 습 니 다.
UPDATE `think_user` SET `score` = `score` + 1 WHERE `id` = 1
UPDATE `think_user` SET `score` = `score` + 5 WHERE `id` = 1
UPDATE `think_user` SET `score` = `score` - 1 WHERE `id` = 1
UPDATE `think_user` SET `score` = `score` - 5 WHERE `id` = 1
setInc
/setDec
지연 업 데 이 트 를 지원 합 니 다.지연 업데이트 가 필요 하 다 면 세 번 째 매개 변 수 를 입력 하고 다음 예 에서 10 초 동안 업 데 이 트 를 지연 합 니 다.
Db::name('user')->where('id', 1)->setInc('score', 1, 10);
setInc
/setDec
방법 은 데이터 에 영향 을 주 는 항목 수 를 되 돌려 줍 니 다.업데이트 지연 을 사용 하면 true 로 돌아 갈 수 있 습 니 다.tp 5.1--데이터베이스 조회 작업
selectOrFail();//데 이 터 를 찾 지 못 한 후 이상 을 던 집 니 다.
Db::table('think_user')->where('status',1)->selectOrFail();
findOrFail();//데 이 터 를 찾 지 못 한 후 이상 을 던 집 니 다.
Db::table('think_user')->where('id',1)->findOrFail();
findOrEmpty();//검색 이 존재 하지 않 을 때 빈 배열 로 돌아 갑 니 다.
Db::table('think_user')->where('id',1)->findOrEmpty();
필드 의 값 을 조회 합 니 다.결과 가 존재 하지 않 을 때 null 로 돌아 갑 니 다.
Db::table('think_user')->where('id',1)->value('name');
어떤 열의 값 을 조회 하 다
//
Db::table('think_user')->where('status',1)->column('name');
// id
Db::table('think_user')->where('status',1)->column('name','id');
전체 데 이 터 를 되 돌려 주 고 색인 값 을 추가 합 니 다.검색 결과 가 존재 하지 않 습 니 다.빈 배열 로 돌아 갑 니 다.
// id
Db::table('think_user')->where('status',1)->column('*','id');
어떤 데이터 의 필드 값 을 되 돌려 줍 니 다.
Db::name('user')->where(['id' => 1])->value('name');
데이터 분할 처리모든 사용자 표 데 이 터 를 분할 처리 하고 매번 100 개의 사용자 기록 을 처리 합 니 다.
Db::table('think_user')->chunk(100, function($users) {
foreach ($users as $user) {
//
}
});
// myUserIterator
Db::table('think_user')->chunk(100, 'myUserIterator');
패 킷 함수 에서 되 돌아 오기false
를 통 해 후속 데이터 세트 에 대한 처 리 를 중단 합 니 다.
Db::table('think_user')->chunk(100, function($users) {
foreach ($users as $user) {
// ...
if($user->status==0){
return false;
}
}
});
chunk
방법 전에 다른 조회 방법 을 호출 하 는 것 을 지원 합 니 다.예 를 들 어:
Db::table('think_user')
->where('score','>',80)
->chunk(100, function($users) {
foreach ($users as $user) {
//
}
});
chunk
방법의 처 리 는 기본적으로 홈 키 에 따라 조회 하고 지정 한 필드 를 지원 합 니 다.예 를 들 어:
Db::table('think_user')->chunk(100, function($users) {
// ...
return false;
},'create_time');
또한 지정 한 처리 데이터 의 순 서 를 지원 합 니 다.
Db::table('think_user')->chunk(100, function($users) {
// ...
return false;
},'create_time', 'desc');
chunk
방법 은 일반적으로 명령 행 에서 데이터 베 이 스 를 일괄 처리 하 는 데 사용 되 며,WEB 접근 처리 에 적합 하지 않 아 시간 초과 가 발생 하기 쉽다.대량 데이터 처리
대량의 데 이 터 를 처리 해 야 한다 면 새 버 전에 서 제공 하 는 커서 조회 기능 을 사용 할 수 있다.이 조회 방식 은 PHP 의 생 성기 특성 을 이용 하여 대량의 데이터 조회 메모리 점용 문 제 를 대폭 줄 일 수 있다.
$cursor = Db::table('user')->where('status', 1)->cursor();
foreach($cursor as $user){
echo $user['name'];
}
cursor
방법 은 생 성기 대상 을 되 돌려 주 고 user 변 수 는 데이터 시트 의 데이터(배열)입 니 다.JSON 형식 데이터 조회(mysql)
// JSON (info json )
Db::table('think_user')
->where('info->email','[email protected]')
->find();
thinkpHP 와 관련 된 내용 에 관심 이 있 는 독자 들 은 본 사이트 의 주 제 를 볼 수 있 습 니 다.,,,,,ThinkpHP 입문 강좌,thinkpHP 템 플 릿 조작 기법 요약,ThinkPHP 상용 방법 총화,codeigniter 입문 강좌,CI(CodeIgniter)프레임 워 크 진급 강좌과Zend FrameWork 프레임 워 크 입문 강좌.본 고 는 ThinkPHP 프레임 워 크 를 기반 으로 한 PHP 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
tp 5.1 프레임 워 크 join 방법 용법 사례 분석본 고의 실례 는 tp 5.1 프레임 워 크 join 방법의 용법 을 서술 하 였 다.여러분 께 참고 하도록 공유 하 겠 습 니 다.구체 적 으로 는 다음 과 같 습 니 다. 4.567914.방법 은 두 개 또는 여...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.