php教程 PHP开发 ThinkPHP3.1 빠른 시작(2) 데이터 CURD

ThinkPHP3.1 빠른 시작(2) 데이터 CURD

Dec 20, 2016 am 11:33 AM

이전 글에서는 ThinkPHP의 기본, 컨트롤러 및 템플릿 생성 방법, M 메소드 사용 방법에 대해 알아보았습니다. 이번 글에서는 데이터의 CURD 연산에 대해 설명하고 더 많은 데이터 연산을 살펴보겠습니다.

CURD

CURD는 데이터베이스 기술의 약자로 일반적인 프로젝트 개발에 있어서 다양한 매개변수의 기본 기능이 CURD입니다. 생성, 업데이트, 읽기 및 삭제 작업을 나타냅니다. CURD는 데이터 처리를 위한 기본 원자 연산을 정의합니다. CURD가 기술적인 어려움 수준으로 격상된 이유는 여러 데이터베이스 시스템에서 CURD 연산과 관련된 집계 관련 활동을 완료하는 성능이 데이터 관계의 변화에 ​​따라 크게 달라질 수 있기 때문입니다.
CURD는 특정 애플리케이션에서 반드시 생성, 업데이트, 읽기, 삭제 메소드를 사용하는 것은 아니지만 이들이 수행하는 기능은 동일합니다. 예를 들어 ThinkPHP는 추가, 저장, 선택 및 삭제 메소드를 사용하여 모델의 CURD 작업을 나타냅니다.

데이터 생성

대부분의 경우 CURD의 생성 작업은 일반적으로 양식을 통해 데이터를 제출합니다. 먼저 프로젝트의 Tpl/Form 디렉터리에 add.html 템플릿 파일을 생성합니다. is:

제목: ;br/>

콘텐츠:

그런 다음 프로젝트의 Action 디렉터리에 FormAction.class도 생성해야 합니다. .php 파일에서는 작업 메서드를 추가하지 않고 당분간 FormAction 클래스만 정의하면 됩니다. 코드는 다음과 같습니다.

class FormAction extends Action{

}

다음으로

http://localhost/app/index.php/Form/add

를 방문하면 양식 페이지를 볼 수 있습니다. 컨트롤러이지만 분명히 액세스는 정상입니다. ThinkPHP는 해당 작업 메서드를 찾지 못하면 해당 템플릿 파일이 있는지 확인하기 때문에 해당 추가 템플릿 파일이 있으므로 컨트롤러가 템플릿 파일을 직접 렌더링하여 출력합니다. 따라서 실제 로직이 없는 작업 방법의 경우 해당 템플릿 파일을 직접 정의하기만 하면 됩니다.
양식에 정의된 제출 주소가 Form 모듈에 대한 삽입 작업임을 알 수 있습니다. 양식 제출 데이터를 처리하려면 다음과 같이 FormAction 클래스에 삽입 작업 메서드를 추가해야 합니다.

class FormAction은 Action을 확장합니다.{

public function insert(){

$Form = D('Form');

if($Form-> create()) {

$result = $Form->add();

if($result) {

$this->success('The 작업이 성공했습니다!');

                                                                                                   

               $this->error($Form->getError());                                    기본 키의 값. 자동 증가 기본 키가 아닌 경우 반환 값은 삽입된 데이터 수를 나타냅니다. false가 반환되면 쓰기 오류를 나타냅니다.

모델

테스트를 용이하게 하기 위해 먼저 데이터베이스에 think_form 테이블을 생성합니다.

CREATE TABLE IF NOT EXISTS `think_form`(

`id` smallint(4) unsigned NOT NULL AUTO_INCREMENT,

`title` varchar(255) NOT NULL,

`content` varchar(255) NOT NULL,

`create_time` int(11) unsigned NOT NULL,

PRIMARY KEY (`id`)

) ENGINE=MyISAM DEFAULT CHARSET=utf8 ;

삽입 연산 방식에서는 D 함수를 사용하는데, M 함수와는 달리 D 함수는 필수입니다. 해당 모델 클래스에 대해 아래와 같이 모델 클래스를 생성해 보겠습니다. 모델 클래스의 정의 사양은 다음과 같습니다. 모델 이름 + Model.class.php (모델 이름은 카멜 케이스로 정의되고 첫 글자는 대문자로 표시됩니다.)
Lib/Model 아래에 FormModel.class.php 파일을 생성합니다. 프로젝트 디렉터리에 코드를 추가하고 다음과 같이 코드를 추가합니다.

class FormModel extends Model {

// 자동 유효성 검사 정의

protected $_validate = array(

array('title','require ', '제목 필수'),

);

// 자동 완성 정의

protected $_auto = array(

array('create_time' ,'time',1,'function'),

);

}

은 주로 자동 확인에 사용되며 특정 용도로 사용하겠습니다. 다른 장에 대해서는 별도로 논의하고 지금은 건너뛰겠습니다. 우리가 알아야 할 것은 D 함수를 사용하여 모델 클래스를 인스턴스화하는 경우 일반적으로 데이터 모델 클래스에 해당해야 하며 생성 메서드가 양식(정의된 경우)에 의해 제출된 데이터를 자동으로 확인하고 자동으로 완성한다는 것입니다. 자동 검증에 실패하면 모델의 getError 메소드를 통해 검증 프롬프트 정보를 얻을 수 있습니다. 검증에 성공하면 데이터 객체가 성공적으로 생성되었지만 현재는 add 메소드를 호출할 때까지 메모리에만 저장되어 있음을 의미합니다. 데이터베이스에 데이터를 기록합니다. 이로써 완전한 Create 작업이 완료되므로 ThinkPHP가 데이터 생성 과정에서 두 단계를 사용하는 것을 볼 수 있습니다.
첫 번째 단계는 create 메소드를 사용하여 데이터 객체를 생성하는 것입니다.
두 번째 단계는 add 메소드 to 현재 데이터 객체가 데이터베이스에 기록됩니다.
물론 첫 번째 단계를 건너뛰고 바로 두 번째 단계로 진행할 수도 있지만 이런 전처리에는 여러 가지 장점이 있습니다.
1. 아무리 복잡한 형태라도 다음과 같은 방법으로 create 메소드를 쉽게 만들 수 있습니다. 한 줄의 코드 데이터 개체
2. 데이터를 작성하기 전에 데이터를 확인하고 보완할 수 있습니다.
실제로 create 메소드에도 안전성과 효율성을 보장하기 위한 단 하나의 목적이 있습니다. 데이터베이스에 기록된 데이터 중
제목을 입력하지 않고 직접 양식을 제출하면 시스템에서 제목을 이렇게 입력해야 한다는 메시지가 표시됩니다.

ThinkPHP3.1 빠른 시작(2) 데이터 CURD

양식을 성공적으로 제출하면 데이터 테이블에 작성된 데이터의 create_time 필드에 이미 값이 있음을 알 수 있습니다. 이는 자동 완성을 통해 작성됩니다. 모델.

ThinkPHP3.1 빠른 시작(2) 데이터 CURD

데이터가 양식을 통하지 않고 완전히 내부적으로 작성된 경우(즉, 데이터의 보안을 완전히 신뢰할 수 있는 경우) add 메소드를 직접 사용할 수 있습니다. 예:

$Form = D('Form');

$data['title'] = 'ThinkPHP';

$data['content'] = ' Form content';

$Form->add($data);

는 객체 모드 작업도 지원할 수 있습니다:

$Form = D('Form' );

$Form->title = 'ThinkPHP';

$Form->content = '양식 내용';

$Form->add( );

객체 모드에서 작동할 때 add 메소드는 데이터를 전달할 필요가 없으며 현재 데이터 객체 할당을 자동으로 식별합니다.

데이터 읽기

데이터 쓰기에 성공하면 데이터를 읽을 수 있습니다. 이전 기사에서 우리는 select 메소드를 사용하여 데이터 세트를 얻을 수 있다는 것을 이미 알고 있습니다. 여기서는 find 메소드를 통해 단일 데이터를 얻을 수 있습니다.

공용 함수. read($id=0){

$Form = M('Form');

// 데이터 읽기

$data = $Form->find( $id);

if($data) {

$this->data = $data;// 템플릿 변수 할당

}else{

$this-> error('데이터 오류');

}

$this->display();

}

읽기 작업 메서드에는 $id 매개변수가 있으므로 id 변수를 허용할 수 있습니다. (나중에 변수 장에서 자세히 설명하겠습니다. 여기서 D 메소드 대신 M 메소드를 사용한 이유는 find 메소드가 기본 모델 클래스인 Model에 있는 메소드이므로 필요가 없기 때문입니다. FormModel 클래스를 인스턴스화하기 위해 오버헤드를 낭비합니다(FormModel 클래스가 정의된 경우에도). 여기서는 일반적으로 find 메소드를 사용하여 AR 모드를 사용하므로 쿼리 조건이 전달되지 않습니다. 기본 키가 $id 값인 데이터를 읽는 것을 의미합니다. find 메소드의 반환 값은 다음 형식의 배열입니다:

'id' => 5 ,

'제목' => '테스트 제목',

'콘텐츠' => '테스트 내용',

'상태' => 🎜>

)

그런 다음 템플릿의 데이터를 출력하고, 읽기 템플릿 파일을 추가하고,

< ;td>{$data.id}

   

< ;/table>

완료 후

http://를 방문할 수 있습니다. localhost/app/index.php/Form/read/id/1

보기

특정 필드의 값만 쿼리해야 하는 경우 getField 메서드를 사용할 수도 있습니다. 예:

$Form = M("Form")

// 제목 가져오기

$title = $Form->where('id=3')- >getField('title');

위 사용법은 id 값 3 title 필드 값으로 데이터를 가져오는 것을 의미합니다. 실제로 getField 메소드에는 다양한 용도가 있지만 특정 필드의 값을 가져오는 것이 getField 메소드의 가장 일반적인 용도입니다.

쿼리 연산은 가장 일반적으로 사용되는 연산이며, 특히 복잡한 쿼리 조건이 포함된 경우 쿼리 언어 장에서 쿼리에 대해 자세히 설명하겠습니다.


데이터 업데이트

데이터를 성공적으로 쓰고 읽은 후 데이터를 편집할 수 있습니다. 먼저 편집 양식 .html에 대한 템플릿 파일 편집을 다음과 같이 추가합니다. 다음:

제목:

콘텐츠:

템플릿을 편집하는 것은 새 양식을 추가하는 것과 다르기 때문에 템플릿에 변수를 할당해야 합니다. 이번에는 FormAction 클래스에 두 가지 작업 메서드를 추가해야 합니다:

public function edit($id=0){

$Form = M('Form');

$this->vo = $Form->find($id);

$this->display();

}

공개 function update( ){

$Form = D('Form');

if($Form->create()) {

$result = $Form -> save();

if($result) {

$this->success('작업이 성공했습니다!');

}else{

              $this->error('Writing error!') getError());

}

}

완료 후에는 액세스

http://localhost/app/index.php/Form/edit/id/1


데이터 업데이트 작업은 ThinkPHP의 save 메소드를 사용합니다. 볼 수 있듯이, create 메소드를 사용하여 양식에 의해 제출된 데이터를 생성할 수도 있으며, save 메소드는 현재 데이터 객체를 데이터베이스에 자동으로 업데이트하며, 업데이트 조건은 실제로 테이블의 기본 키입니다. 숨겨진 필드를 함께 제출하는 이유로 기본 키 값을 사용해야 합니다.
업데이트 작업이 양식 제출에 의존하지 않는 경우 다음과 같이 작성할 수 있습니다.

$Form = M("Form")

// 수정할 데이터 객체 속성

$data['id'] = 5;

$data['title'] = 'ThinkPHP';

$data[' content'] = 'ThinkPHP3.1 Version release';

$Form->save($data); // 조건에 따라 수정된 데이터를 저장합니다

save 메소드는 자동으로 데이터 개체의 기본 키 필드를 선택하고 이를 조건으로 업데이트합니다. 물론 업데이트 조건을 명시적으로 전달할 수도 있습니다.

$Form = M("Form")

// 수정할 데이터 객체 속성 할당

$data['title'] = 'ThinkPHP';

$data['content'] = 'ThinkPHP3.1 버전 출시';

$Form->where(' id= 5')->save($data); // 조건에 따라 수정된 데이터 저장

객체 모드로 변경 가능:

$Form = M("Form" ) ;

//수정할 데이터 객체 속성 할당

$Form->title = 'ThinkPHP';

$Form->content = 'ThinkPHP3 .1 버전 출시';

$Form->where('id=5')->save() // 조건에 따라 수정된 데이터를 저장

할당 방법 데이터 객체, save 메소드는 데이터를 전달할 필요가 없으며 자동으로 인식됩니다.
save 메소드의 반환 값은 영향을 받은 레코드 수입니다. false가 반환되면 업데이트 오류를 ​​의미합니다.

매번 save 메소드를 호출하는 대신 특정 필드의 값만 수정하고 setField 메소드를 사용해야 하는 경우도 있습니다.

$Form = M("Form");

// 제목 값 변경

$Form->where('id=5')->setField ('title','ThinkPHP');

통계 필드의 경우 시스템은 더욱 편리한 setInc 및 setDec 메소드도 제공합니다.
예:

$User = M("User"); // 사용자 개체 인스턴스화

$User->where('id=5')-> setInc ('score',3); // 사용자의 포인트가 3만큼 증가합니다

$User->where('id=5')->setInc('score'); 사용자 포인트가 1만큼 증가합니다

$User->where('id=5')->setDec('score',5) // 사용자의 포인트가 5만큼 감소합니다

$User-> where('id=5')->setDec('score'); // 사용자의 포인트가 1 감소합니다

데이터 삭제

데이터 삭제는 매우 간단합니다. 예를 들어

$Form = M('Form');

$Form->delete( 5);

은 삭제할 기본 키가 5개 데이터라는 의미입니다. 삭제 방법은 삭제 조건에 따라 단일 데이터 또는 여러 데이터를 삭제할 수 있습니다. 예:

$User = M("User"); // 사용자 개체 인스턴스화

$User->where('id=5')->delete() // ID가 5인 사용자 데이터 삭제

$User->delete('1,2 ,5'); // 기본 키 1, 2, 5를 사용하여 사용자 데이터 삭제

$User->where('status=0 ')->delete(); // 모든 상태 삭제

삭제 메소드의 반환 값은 삭제된 레코드 수입니다. 반환 값이 false이면 SQL 오류입니다. .반환값이 0이면 삭제된 데이터가 없음을 의미합니다.

요약

이제 ThinkPHP의 CURD 연산을 기본적으로 익혔고 ThinkPHP의 create, add, save, delete 메소드 사용법을 배웠습니다. getField가 2개 더 있습니다. 필드 작업을 위한 setField 메소드. 다음 글에서는 ThinkPHP에서 제공하는 쿼리 언어를 어떻게 사용하는지 좀 더 자세히 살펴보겠습니다.


위 내용은 ThinkPHP3.1 Quick Start (2) Data CURD의 내용입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php. CN)


id:
제목: td> 내용: {$data.content }
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Python 학습: 시스템에 Pandas 라이브러리를 설치하는 방법 Python 학습: 시스템에 Pandas 라이브러리를 설치하는 방법 Jan 09, 2024 pm 04:42 PM

빠른 시작: Python에 pandas 라이브러리를 설치하려면 특정 코드 예제가 필요합니다. 1. 개요 Python은 많은 실용적인 라이브러리를 포함하는 강력한 개발 생태계를 갖춘 널리 사용되는 프로그래밍 언어입니다. Pandas는 가장 널리 사용되는 데이터 분석 라이브러리 중 하나이며 효율적인 데이터 구조와 데이터 분석 도구를 제공하여 데이터 처리 및 분석을 더 쉽게 만듭니다. 이 기사에서는 Python에 pandas 라이브러리를 설치하는 방법을 소개하고 해당 코드 예제를 제공합니다. 2. 파이 설치

Mojs 애니메이션 라이브러리 빠른 시작: 폭발 모듈 가이드 Mojs 애니메이션 라이브러리 빠른 시작: 폭발 모듈 가이드 Sep 02, 2023 pm 11:49 PM

Mojs를 사용하여 HTML 요소에 애니메이션을 적용하는 방법을 학습하는 것으로 이 시리즈를 시작합니다. 이 두 번째 튜토리얼에서는 Shape 모듈을 계속 사용하여 내장된 SVG 모양에 애니메이션을 적용합니다. 세 번째 튜토리얼에서는 ShapeSwirl 및 Stagger 모듈을 사용하여 SVG 모양에 애니메이션을 적용하는 더 많은 방법을 다룹니다. 이제 버스트 모듈을 사용하여 버스트에서 다양한 SVG 모양에 애니메이션을 적용하는 방법을 알아봅니다. 이 튜토리얼은 처음 세 튜토리얼에서 다룬 개념에 따라 달라집니다. 아직 읽어보지 않으셨다면 먼저 읽어보시길 권합니다. 기본 버스트 애니메이션 만들기 버스트 애니메이션을 만들기 전에 가장 먼저 해야 할 일은 버스트 개체를 인스턴스화하는 것입니다. 그 후에는 다른 속성을 지정할 수 있습니다.

빠른 시작: Go 언어 기능을 사용하여 간단한 오디오 스트리밍 서비스 구현 빠른 시작: Go 언어 기능을 사용하여 간단한 오디오 스트리밍 서비스 구현 Jul 29, 2023 pm 11:45 PM

빠른 시작: Go 언어 기능을 사용하여 간단한 오디오 스트리밍 서비스 구현 소개: 오디오 스트리밍 서비스는 오늘날 디지털 세계에서 점점 더 인기를 얻고 있으며, 이를 통해 전체 다운로드를 수행하지 않고도 네트워크를 통해 직접 오디오 파일을 재생할 수 있습니다. 이 글에서는 Go 언어의 기능을 활용하여 간단한 오디오 스트리밍 서비스를 빠르게 구현하는 방법을 소개하여 이 기능을 더 잘 이해하고 사용할 수 있도록 하겠습니다. 1단계: 준비 먼저 Go 언어 개발 환경을 설치해야 합니다. 공식 홈페이지(https://golan)에서 다운로드 가능합니다.

빠른 시작: Go 언어 기능을 사용하여 간단한 이미지 인식 기능 구현 빠른 시작: Go 언어 기능을 사용하여 간단한 이미지 인식 기능 구현 Jul 30, 2023 pm 09:49 PM

빠른 시작: Go 언어 기능을 사용하여 간단한 이미지 인식 기능 구현 오늘날의 기술 발전에서 이미지 인식 기술이 화두가 되었습니다. 빠르고 효율적인 프로그래밍 언어인 Go 언어는 이미지 인식 기능을 구현할 수 있는 능력을 갖추고 있습니다. 이 기사에서는 독자들에게 Go 언어 기능을 사용하여 간단한 이미지 인식 기능을 구현하는 빠른 시작 가이드를 제공합니다. 먼저 Go 언어 개발 환경을 설치해야 합니다. Go 언어 공식 홈페이지(https://golang.org/)에서 해당 버전을 다운로드 받으실 수 있습니다.

빠르게 시작하는 데 도움이 되도록 Go 언어에서 일반적으로 사용되는 5가지 프레임워크를 추천합니다. 빠르게 시작하는 데 도움이 되도록 Go 언어에서 일반적으로 사용되는 5가지 프레임워크를 추천합니다. Feb 24, 2024 pm 05:09 PM

제목: 빠르게 시작하기: 권장되는 5가지 일반적인 Go 언어 프레임워크 최근 몇 년 동안 Go 언어의 인기로 인해 점점 더 많은 개발자가 프로젝트 개발에 Go를 사용하기로 선택했습니다. Go 언어는 효율성, 단순성 및 뛰어난 성능으로 인해 광범위한 주목을 받아왔습니다. Go 언어 개발에서 적합한 프레임워크를 선택하면 개발 효율성과 코드 품질을 향상시킬 수 있습니다. 이 기사에서는 Go 언어에서 일반적으로 사용되는 5가지 프레임워크를 소개하고 독자가 빠르게 시작할 수 있도록 코드 예제를 첨부합니다. Gin 프레임워크 Gin은 빠르고 효율적인 경량 웹 프레임워크입니다.

5가지 Kafka 시각화 도구를 사용하여 빠른 시작 알아보기 5가지 Kafka 시각화 도구를 사용하여 빠른 시작 알아보기 Jan 31, 2024 pm 04:32 PM

빠른 시작: 다섯 가지 Kafka 시각화 도구 사용 가이드 1. Kafka 모니터링 도구: 소개 Apache Kafka는 대량의 데이터를 처리하고 높은 처리량과 짧은 대기 시간을 제공할 수 있는 분산 게시-구독 메시징 시스템입니다. Kafka의 복잡성으로 인해 Kafka 클러스터를 모니터링하고 관리하는 데 도움이 되는 시각화 도구가 필요합니다. 2.Kafka 시각화 도구: 다섯 가지 주요 선택 KafkaManager: KafkaManager는 오픈 소스 웹 커뮤니티입니다.

빠른 시작: Go 언어 기능을 사용하여 간단한 데이터 시각화 선 차트 표시 구현 빠른 시작: Go 언어 기능을 사용하여 간단한 데이터 시각화 선 차트 표시 구현 Jul 30, 2023 pm 04:01 PM

빠른 시작: Go 언어 기능을 사용하여 간단한 데이터 시각화 선 차트 표시 구현 소개: 데이터 분석 및 시각화 분야에서 선 차트는 시간이나 기타 변수에 따른 데이터 변화 추세를 명확하게 표시할 수 있는 일반적으로 사용되는 차트 유형입니다. 이 기사에서는 Go 언어 기능을 사용하여 간단한 데이터 시각화 선 차트 표시를 구현하는 방법을 소개하고 관련 코드 예제를 제공합니다. 1. 준비 작업을 시작하기 전에 다음 조건을 확인해야 합니다. Go 언어 환경을 설치하고 관련 환경 변수를 설정합니다. 필요한 종속성 설치

빠른 시작: Go 언어 기능을 사용하여 간단한 데이터 집계 기능 구현 빠른 시작: Go 언어 기능을 사용하여 간단한 데이터 집계 기능 구현 Jul 29, 2023 pm 02:06 PM

빠른 시작: Go 언어 기능을 사용하여 간단한 데이터 집계 기능을 구현합니다. 소프트웨어 개발에서 우리는 일련의 데이터를 집계해야 하는 상황에 자주 직면합니다. 집계 작업은 통계, 요약, 계산 등을 수행하여 데이터를 분석하고 표시할 수 있습니다. Go 언어에서는 함수를 사용하여 간단한 데이터 집계 기능을 구현할 수 있습니다. 먼저, 집계하려는 데이터를 나타내는 데이터 유형을 정의해야 합니다. 학생의 성적 테이블이 있고 각 학생에게 이름과 학년이라는 두 개의 필드가 있다고 가정하면 다음 구조를 만들 수 있습니다.

See all articles