>백엔드 개발 >PHP 튜토리얼 >ThinkPHP3.1 빠른 시작 (4) 일관된 작동

ThinkPHP3.1 빠른 시작 (4) 일관된 작동

黄舟
黄舟원래의
2016-12-20 11:36:191301검색

이전 기사에서는 쿼리 언어의 사용법에 대해 자세히 설명했지만 쿼리 언어는 쿼리나 작업 조건의 문제만 해결할 뿐입니다. 더 많은 협력을 위해서는 모델에서 제공하는 일관된 작업 방법을 사용해야 합니다.

소개

지속적인 작업은 데이터 액세스의 코드 명확성과 개발 효율성을 효과적으로 향상시킬 수 있으며 모든 CURD 작업을 지원하는 것도 ThinkPHP ORM의 하이라이트입니다. 사용 방법도 비교적 간단합니다. 이제 상태 1을 만족하는 User 테이블의 처음 10개 레코드를 쿼리하고 사용자 생성 시간을 기준으로 정렬하려는 경우 코드는 다음과 같습니다.

$User->where(' status=1')->order('create_time')->limit(10)->select();

where, order 및limit 메소드 여기서는 select 메서드가 일관성 있는 작업 메서드가 아니기 때문에 마지막에 배치되어야 한다는 점을 제외하면 연속 작업에 대한 메서드 호출 순서가 순차적이지 않습니다. 예를 들어 다음 코드는 다음과 같습니다. 위:

$User-> ;order('create_time')->limit(10)->where('status=1')->select();

실제로 쿼리 메서드만 일관된 작업을 사용할 수 있는 것이 아니라 모든 CURD 메서드를 사용할 수 있습니다. 예:

$User->where('id=1')->field('id ,이름,이메일')->find();

$User->where('status=1 and id=1')->delete();

연속 작업은 현재 쿼리 또는 작업에만 유효하며 일관성 있는 작업의 전달된 모든 값을 자동으로 지웁니다(캐시 일관성 있는 작업과 같이 현재 전달된 값을 기록하는 특수한 일관성 있는 작업이 있습니다). 즉, 일관된 작업의 결과는 후속 쿼리로 전달되지 않습니다.
시스템에서 지원하는 일관된 작업 방법은 다음과 같습니다.

방법

기능

지원되는 매개변수 유형

where 쿼리 또는 업데이트 조건을 정의하는 데 사용됩니다. 문자열, 배열 및 객체

table 연산할 데이터 테이블의 이름을 정의하는 데 사용됩니다. 문자열 및 배열

별칭을 지정하는 데 사용됩니다. 현재 데이터 테이블 정의 별칭 문자열

data 데이터를 추가하거나 업데이트하기 전에 데이터 개체를 할당하는 데 사용됩니다. 배열 및 개체

field 쿼리할 필드를 정의하는 데 사용됩니다(필드 제외 지원) 문자열 및 배열

order 결과 정렬에 사용 문자열 및 배열

limit 쿼리 결과 수를 제한하는 데 사용 문자열 및 숫자

page 쿼리 페이징에 사용(내부적으로 제한으로 변환됨) ) 문자열 및 숫자

group 쿼리에 대한 그룹 지원에 사용 문자열

have 쿼리 지원에 사용 문자열

join* 쿼리에 사용 조인 지원 문자열 및 배열

union* 쿼리 문자열, 배열 및 객체에 대한 유니온 지원

distinct 쿼리 부울 값에 대한 고유한 지원

lock 데이터베이스 부울 값에 대한 잠금 메커니즘 사용

캐시 쿼리 캐싱에 사용됨 여러 매개변수 지원(나중에 캐시 섹션에서 자세히 설명)

relation 연관 쿼리에 사용됨(연관 모델 확장 지원 필요) 문자 문자열

validate 자동 데이터 확인에 사용 배열

auto 자동 데이터 완성에 사용 Array

filter 데이터 필터링에 사용 String

scope* 범위 지정에 사용 String, Array

모든 연속 연산 return 현재 모델 인스턴스 객체(this)와 *로 표시된 객체는 다중 호출을 지원합니다.

사용법

일관적인 작업을 사용하려면 여러 메서드를 공동으로 사용하는 경우가 많기 때문에 각 일관된 작업의 기본 사용법을 아래에 간략하게 소개합니다.

WHERE

where 쿼리 또는 업데이트 조건 정의

사용 where($where)

매개변수 where(필수): 쿼리 또는 작업 조건 , 문자열, 배열 및 객체 지원

반환 값 현재 모델 인스턴스

비고 where 메소드가 호출되지 않으면 기본적으로 업데이트 및 삭제 작업이 수행되지 않습니다.

Where 방법은 가장 일반적으로 사용되는 일관성 있는 작업 방법입니다. 자세한 사용법은 빠른 시작 (3) 쿼리 언어를 참조하세요.


테이블

table은 연산할 데이터 테이블의 이름을 정의하고 현재 연산에 대한 데이터 테이블의 이름을 동적으로 변경합니다. 별칭과 교차를 포함하여 데이터 테이블의 전체 이름을 작성해야 합니다. -데이터베이스 작업

사용 테이블($table)

매개변수 테이블(필수) : 데이터 테이블 이름, 다중 테이블 운영 지원, 문자열, 배열 및 객체 지원

반환값 현재 모델 인스턴스

Remarks table 메소드를 호출하지 않으면 해당 모델에 해당하거나 모델이 정의한 데이터 테이블을 자동으로 가져옵니다.

사용 예:

$Model->Table('think_user user')-> where('status>1')->select();

테이블에서 라이브러리 간 작업을 수행할 수도 있습니다. 예:

$Model->Table('db_name.think_user user')->where('status>1')->select();

Table 메소드의 매개변수는 문자열과 배열을 지원합니다. 배열 메소드의 사용법:

$Model ->Table(array('think_user'=>'user','think_group'=>'group' ))->where('status>1')->select();

배열 정의를 사용하면 테이블 이름과 키워드 간의 충돌로 인한 오류를 피할 수 있다는 장점이 있습니다.
일반적인 상황에서는 테이블 메서드를 호출할 필요가 없습니다. 현재 모델에 해당하거나 정의된 데이터 테이블은 기본적으로 자동으로 가져옵니다.

DATA

데이터를 추가하거나 저장하기 전에 데이터 개체를 할당하는 데 사용할 수 있습니다.

사용량 데이터($data )

매개변수 data(필수): data, 배열 및 객체 지원

반환 값 현재 모델 인스턴스

비고 데이터 메소드가 호출되지 않으면 현재 데이터 객체가 됩니다. 또는 추가 및 저장 데이터를 전달합니다.

사용 예:

$Model->data($data)->add();

$Model -> ;data($data)->where('id=3')->save();

Data 메소드의 매개변수는 객체와 배열을 지원합니다. 자동으로 배열로 변환됩니다. 값을 할당하기 위한 데이터 메서드를 정의하지 않은 경우 create 메서드를 사용하거나 데이터 개체에 값을 수동으로 할당할 수도 있습니다.

데이터 개체를 생성하는 것 외에도 모델의 데이터 메서드는 현재 데이터 개체를 읽을 수도 있습니다.
예:

$this->find(3);

$data = $this->data();

FIELD

필드는 쿼리할 필드를 정의하는 데 사용됩니다

사용 필드($field,$just=false)

매개변수

필드(필수): 필드 이름, 문자열 및 배열 지원, 지정된 필드 별칭 지원; true인 경우 데이터 테이블의 명시적 필드 또는 모든 필드를 의미합니다.

제외(선택): 제외 여부, 기본값은 false, true인 경우 정의된 필드가 필드 매개변수 정의를 제외한 데이터 테이블의 모든 필드임을 의미합니다.

반환값 현재 모델 인스턴스

비고 field 메소드를 호출하지 않으면 기본적으로 모든 필드가 반환되며, 필드(' *') 등 효과

사용 예:

$Model->field('id,nickname as name')->select();

$Model->field (array('id','nickname'=>'name'))->select();

필드 메소드가 호출되지 않거나 매개변수가 전달된 경우 필드 메소드가 비어 있으면 필드( '*')를 사용하는 것이 동일합니다.
모든 필드를 명시적으로 전달해야 하는 경우 다음 방법을 사용할 수 있습니다.

$Model->field(true)->select();

그러나 우리는 명시적으로 필요한 필드 이름만 가져오거나 필드 제외 방법을 사용하여 정의하는 것이 더 좋습니다. 예:

$Model->field('status',true)-> select();

는 상태를 제외한 모든 필드를 가져오는 것을 의미합니다.

ORDER

order는 작업 결과 정렬에 사용됩니다.

사용 순서($order)

매개변수 순서(필수) : 정렬된 필드 이름, 문자열 및 배열 지원, 다중 필드 정렬 지원

반환 값 현재 모델 인스턴스

비고 order 메서드가 호출되지 않으면 기본값 데이터베이스가 사용됩니다. 규칙

사용 예:

order('id desc')

정렬 방법은 여러 필드의 정렬을 지원합니다.

order(' status desc, id asc')

order 메소드의 매개변수는 문자열과 배열을 지원합니다. 배열의 사용법은 다음과 같습니다.

order(array('status'=>'desc ','id'))

LIMIT

limit는 쿼리할 결과의 제한을 정의하는 데 사용됩니다(모든 데이터베이스 유형 지원)

사용 제한( $limit)

매개변수 제한(필수): 수량 제한, 문자열 지원

반환 값 현재 모델 인스턴스

비고 제한이 있는 경우 메서드가 호출되지 않으면 제한이 없다는 뜻입니다.

제한 메소드가 호출되지 않으면 제한이 없다는 것을 의미합니다.
데이터베이스 유형마다 제한 사용법이 다르다는 것을 알고 있지만 ThinkPHP 사용에는 항상 통일된 메소드가 있습니다. Limit('offset ,length')는 Mysql, SqlServer 또는 Oracle 데이터베이스인지 여부에 관계없이 시스템의 데이터베이스 드라이버 클래스가 이러한 차이점을 해결하는 역할을 합니다.
사용 예:

limit('1,10')

은 다음과 같은 방식으로 작성할 수도 있으며 이는 동일합니다.

limit(1,10 )

limit('10')

을 사용하는 경우

limit('0,10')

과 같습니다. PAGE

페이지는 쿼리할 데이터 페이징을 정의하는 데 사용됩니다.

사용 페이지($page)

매개변수 페이지 (필수) : 페이징, 문자열 지원

반환값 현재 모델 인스턴스

비고 없음

페이지 작업 방식은 페이징 쿼리를 보다 빠르게 수행할 수 있는 새로운 기능입니다.
Page 메소드의 사용법은 제한 메소드와 유사합니다. 형식은 다음과 같습니다.

Page('page[,listRows]')

Page는 현재 페이지 수를 나타냅니다. listRows는 각 페이지에 표시되는 레코드 수를 나타냅니다. 예를 들어

Page('2,10')

은 각 페이지에 10개의 레코드가 표시되면 2페이지의 데이터를 가져온다는 의미입니다.
다음 쓰기 방법은 동일합니다:

Page(2,10);

listRow 쓰지 않으면 다음과 같이limit('length') 값을 읽습니다.

limit(25)->page(3);

은 각 페이지에 25개의 레코드가 표시되면 3페이지의 데이터를 얻는다는 의미입니다.
제한이 설정되지 않은 경우 기본값은 페이지당 20개의 레코드를 표시하는 것입니다.
page 메소드는 두 번째 매개변수에 대한 지원을 추가합니다. 예:

$this->page(5,25)->select();

및 이전 사용법

$this->limit('5,25')->select();

동등합니다.

GROUP

데이터베이스에 대한 그룹 그룹 쿼리 지원

사용 그룹($group)

Parameter group(필수): 그룹의 필드 이름, 문자열 지원

반환 값 현재 모델 인스턴스

비고 없음

사용 예:

group('user_id ')

그룹 메소드의 매개변수는

HAVING

문자열만 지원합니다. 데이터베이스에 대한 질의를 갖는 것은

사용법 갖는($having)

매개변수 갖는(필수) : 갖는, 지원 문자열

반환값 현재 모델 인스턴스

비고 없음

사용예:

having('user_id>0')

have 메소드의 매개변수는 문자열만 지원합니다

JOIN

join은 데이터베이스에 대한 조인 쿼리를 지원합니다

사용법 Join($join)

매개변수 Join(필수): 조인 작업, 문자열 및 배열 지원

반환값 현재 모델 인스턴스

비고 Join 메소드는 다중 호출을 지원합니다

사용 예:

$Model->join(' work ON Artist.id = work.artist_id')->join('card ON 아티스트.card_id = 카드.id')->select();

필요한 경우 기본적으로 LEFT JOIN 방법이 사용됩니다. 기타 JOIN 방법은

$Model->join('RIGHT JOIN work ON Artist.id = work.artist_id')->select();

으로 변경할 수 있습니다. method 매개변수가 배열인 경우 조인 방법은 한 번만 사용할 수 있으며 문자열 방법과 혼합할 수 없습니다.

예:

join(array(' 작업 ON 아티스트.id = work.artist_id','카드 ON 아티스트.카드_id = 카드.id'))

UNION

union 데이터베이스에 대한 Union 쿼리 지원

Usage Union($union,$all=false)

매개변수 Union(필수) : 유니온 연산, 문자열, 배열 및 객체 지원

all (선택 사항): UNION ALL 연산 사용 여부, 기본값은 false

반환 값 현재 모델 인스턴스

비고 Union 메서드 지원 다중 호출

사용 예:

$Model->field('name')

->table('think_user_0')

- >union('think_user_1에서 이름 선택')

-->union('think_user_2에서 이름 선택')

->select();

배열 사용법:

$Model->field('name')

->table('think_user_0')

->union(array('field ') =>'이름','테이블'=>'think_user_1'))

      ->union(array('field'=>'name','table'=>'think_user_2'))

      ->select();

或者

$Model->field('name')

      ->table('think_user_0')

      ->union(array('SELECT name FROM think_user_1','think_user_2에서 이름 선택'))

      ->select();

支持UNION ALL 操작품, 例如:

$Model->field( 'name')

      ->table('think_user_0')

      ->union('SELECT name FROM think_user_1',true)

      ->union( 'select name FROM think_user_2',true)

      ->select();

或者

$Model->field('name')

      ->table('think_user_0')

      ->union(array('SELECT name FROM think_user_1','SELECT name FROM think_user_2'),true)

      -> select();

每个union 방식을 사용하여 SELECT를 선택합니다.数据类型。同时,每条 SELECT 语句中的列的顺序必须滤.

DISTINCT

뚜렷한 查询数据的时候进行唯一过滤

사용법    distinct($distinct)    

参数    distinct(必须):是否采用distinct,支持布尔值    

返回值    当前模型实例    

备注    无    

使用示例:

$Model->Distinct(true)->field('name')->select();

LOCK

lock 用于查询或者写入锁정

사용법    lock($lock)    

参数    lock(必须):是否需要锁정,支持布尔值    

返回值    当前模型实例    

备注    join방법支持多次调用    

잠금 방법机目,如果에서 查询或者执行操时候使用:

잠금(true)

就会自动在生成的SQL语句最后加上 업데이트를 위해 지금 업데이트를 기다리세요(Oracle数据库).

확인

validate 用于数据的自动验证

사용법    validate($validate)    

参数    validate(必须):自动验证定义    

返回值    当前模型实例    

备注    只能和create방법配합使용    

validate 방법론 사용 于数据的自动验证,我们会在数据验证part详细描述。

AUTO

auto 用于数据自动完成

사용법    auto($auto)    

参数    auto(必须):定义自动完成    

返回值    当前模型实例    

备注    auto방법只能配합create方法使용    

auto방법 사용하기数据自动完成分描述。

범위

scope 用于模型的命name范围

사용법    scope($scope)

参数    scope(必须):命name范围定义    

返回值    当前模型实例    

备注    scope방법법实是连贯操작동적 결정 义    

범위 방법的具体用法可以参考:3.1 의 새로운 특별 命name范围

FILTER

filter 用于数据的security过滤

사용 방법    filter($filter)    

参数    filter(必须):过滤方法name    

返回值    当前模型实例    

备注    filterdirection 一般用于写入和更新操작    

filter 방법 사용于对数据对象적 보안 보호, 例如:

$Model->data($data)->filter('strip_tags')->add();

이전 필터 방식은 더 많은 방법을 사용하지 않습니다.

사용

저희 회사의 광고 방식은 매우 다양합니다. SQL을 사용하다可以实现的操작품 ,基本上道可以用ThinkPHP적 连贯操작품 并且不用考虑数据库の间的表达差异,具有可移植性.家讲解如何操작화获取变weight。

위 내용은 ThinkPHP3.1 Quick Start(4)의 지속적인 구동 내용입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!


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