ThinkPHP3.1 quick start (4) coherent operation

黄舟
Release: 2023-03-03 17:02:02
Original
1217 people have browsed it

In the previous article, we described the usage of query language in detail, but query language only solves the problem of query or operation conditions. More cooperation requires the use of coherent operation methods provided by the model.

Introduction

Continuous operation can effectively improve the code clarity and development efficiency of data access, and supports all CURD operations. It is also a highlight of ThinkPHP's ORM. It is also relatively simple to use. If we now want to query the first 10 records of a User table that satisfy the status of 1, and want to sort by the user's creation time, the code is as follows:

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

The where, order and limit methods here are called coherent operation methods, except that the select method must be placed last Except (because the select method is not a coherent operation method), the order of method calls for consecutive operations is not sequential. For example, the following code is equivalent to the above:

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

In fact, not only query methods can use coherent operations, but all CURD methods can be used, for example:

$User-> ;where('id=1')->field('id,name,email')->find();

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

The coherent operation is only valid for the current query or operation. After completion, all the passed values of the coherent operation will be automatically cleared (there are some special coherent operations that will record the current passed values, such as cache coherent operations). In short, the results of a coherent operation are not carried over to subsequent queries.
The coherent operation methods supported by the system are:

Method

Function

Supported parameter types

where Used to query or update the definition of conditions Strings, arrays and objects

table Used to define the operations to be performed Data table name String and array

alias Used to define an alias for the current data table String

data Used to assign data objects before adding or updating data Arrays and objects

field Used to define the fields to be queried ( Supports field exclusion) Strings and arrays

order Used to sort results Strings and arrays

limit Used to limit the number of query results Strings and numbers

page Used for query paging (will be converted to limit internally) Strings and Number

group Used for group support for queries String

having Used for having support for queries String

join* Used for join support for queries Strings and arrays

union* Used for union for queries Support strings, arrays and objects

distinct Support for query distinct Boolean value

lock Lock mechanism for database Boolean value

cache For query cache Support multiple parameters (described in detail in the cache section later)

于Relation is used to associate inquiries (need to expand support) string. String, array

All consecutive operations return the current model instance object (this), and the ones marked with * support multiple calls.

Usage

Since the use of coherent operations often involves the joint use of multiple methods, the basic usage of each coherent operation is briefly introduced below:

WHERE

where is used to query or update the definition of conditions

Usage where($where)

Parameters where (required): query or operation conditions, supports strings, arrays and objects

Return value Current model instance

Remarks If the where method is not called, updates and deletions will not be performed by default Operation

Where method is the most commonly used coherent operation method. For more detailed usage, please refer to: Quick Start (3) Query Language.

TABLE

table Define the name of the data table to be operated, and dynamically change the name of the data table for the current operation. You need to write the full name of the data table, including the prefix. You can use aliases and cross-database operations

Usage table($table)

Parameters table (required): Data table name, supports operating multiple tables, supports strings, arrays and objects

Return value Current model instance

Remarks If the table method is not called, the data table corresponding to or defined by the model will be automatically obtained

Usage example:

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

You can also perform cross-library operations in the table method, for example:

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

The parameters of the Table method support strings and arrays. Usage in array mode:

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

The advantage of using array definition is that it can avoid errors due to conflicts between table names and keywords.
Under normal circumstances, there is no need to call the table method. The data table corresponding to or defined by the current model will be automatically obtained by default.

DATA

data can be used to assign data objects before adding or saving data

Usage data($data)

Parameters data (required): data, supports arrays and objects

Return value Current Model instance

Remarks If the data method is not called, the current data object or the data passed in add and save will be taken

Usage example:

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

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

The parameters of the Data method support objects and arrays. If they are objects, they will be automatically converted into arrays. If you do not define the data method to assign a value, you can also use the create method or manually assign a value to the data object.

In addition to creating data objects, the data method of the model can also read the current data object,
For example:

$this->find(3);

$data = $this->data() ;

FIELD

field Used to define the fields to be queried

Usage field($field,$except=false)

Parameters

field (required): field name, supports strings and arrays, Supports specifying field aliases; if true, it means explicit or all fields in the data table.

except (optional): Whether to exclude, the default is false, if true, it means that the defined fields are all fields in the data table except the field parameter definition.

Return value Current model instance

Remarks If the field method is not called, all fields will be returned by default, which is equivalent to field ('*')

Usage example:

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

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

if If the field method is not called or the parameter passed in to the field method is empty, it is equivalent to using field ('*').
If you need to pass in all fields explicitly, you can use the following method:

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

But we recommend only getting the field names that need to be explicit , or defined by field exclusion, for example:

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

means to get all fields except status.

ORDER

order is used to sort the operation results

Usage order($order)

Parameters order (required): sorted field name, supports strings and arrays, supports multiple field sorting

Return value Current model instance

Remarks If the order method is not called, the default rules of the database will be followed

Usage example:

order('id desc')

The sorting method supports sorting of multiple fields

order('status desc,id asc')

The parameters of the order method support strings and arrays. The usage of arrays is as follows:

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

LIMIT

limit is used to define the limit of results to be queried (supports all database types)

Usage limit($limit)

Parameter limit (required): limit quantity, supports string

Return value Current model instance

Note If the limit method is not called, it means there is no limit

Note: If the limit method is not called, it means there is no limit.
We know that the usage of limit is different for different database types, but the usage in ThinkPHP is always a unified method, that is, limit('offset,length') , whether it is Mysql, SqlServer or Oracle database, it is used in this way, and the database driver class of the system will be responsible for solving this difference.
Usage example:

limit('1,10')

can also be written in the following way, which is equivalent:

limit(1,10)

If you use

limit('10')

Equivalent to

limit('0,10')

PAGE

page is used to define the data paging to be queried

Usage page($page)

Parameters page (required): paging, supported String

Return value Current model instance

Remarks None

Page operation method is a new feature, which can perform paging query more quickly. The usage of the
Page method is similar to the limit method. The format is:

Page('page[,listRows]')

Page represents the current number of pages, and listRows represents the number of records displayed on each page. For example:

Page('2,10')

means that when 10 records are displayed on each page, the data on page 2 is obtained.
The following writing method is equivalent:

Page(2,10);

listRow will read the value of limit('length') if not written, for example:

limit(25)->page(3 );

means that when 25 records are displayed on each page, the data on page 3 is obtained.
If limit is not set, the default is to display 20 records per page.
The page method adds support for a second parameter, for example:

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

and previous usage

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

equivalent.

GROUP

group group query support for database

Usage group($group)

Parameters group (required): field name of group, supports string

Return value Current model instance

Remarks None

Usage example:

group('user_id')

Group method parameters only support strings

HAVING

having for database having query support

Usage having($having)

Parameters having (required): having, supports strings

Return value Current model instance

Remarks None

Usage example:

having('user_id>0')

having method parameters only support strings

JOIN

join for database join query support

Usage join($join)

Parameters join (required): join operation, supports strings and arrays

Return value Current model instance

Remarks The join method supports multiple calls

Usage example:

$Model->join(' work ON artist.id = work.artist_id')->join('card ON artist.card_id = card.id')- >select();

The default method is LEFT JOIN. If you need to use other JOIN methods, you can change it to

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

If the parameters of the join method are arrays, the join method can only be used once, and it cannot be mixed with string methods.
For example:

join(array('work ON artist.id = work.artist_id','card ON artist.card_id = card.id'))

UNION

union union query support for database

Usage union($union,$all=false)

Parameters union (required): union operation, supports strings, arrays and objects
all (optional): whether to use UNION ALL operation, the default is false

Return value Current model instance

Remarks Union method supports multiple calls

Usage example:

$Model->field('name')

- ->table('think_user_0')

->union( 'SELECT name FROM think_user_1')

-->union('SELECT name FROM think_user_2')

-->select();

Array usage:

$Model->field('name')

->table('think_user_0')

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

. 'name')

->table('think_user_0')

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

->select();

Supports UNION ALL operations, such as:

$Model->field('name')

->table('think_user_0')

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

- >union('SELECT name FROM think_user_2',true) ->select(); ;-& GT; Union (Array ('Select name from Think_user_1', 'Select name from Think_user_2'), True)-& GT; Select (); Essence

Note: The SELECT statements inside the UNION must have the same number of columns. Columns must also have similar data types. Also, the order of the columns in each SELECT statement must be the same.

DISTINCT

distinct performs unique filtering when querying data

Usage distinctct($distinct)

Parameter distinct (required): Whether to use distinct, supports Boolean value

Return value Current model instance

Remarks None

Usage example:


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

LOCK

lock is used for query or write lock

Usage Lock($lock)

Parameters Lock (required): Whether locking is required, supports Boolean value

Return value Current model instance

Remarks The join method supports multiple calls

Lock method is a lock mechanism for the database , if used when querying or executing operations:

lock(true)

will automatically add FOR UPDATE or FOR UPDATE NOWAIT (Oracle database) at the end of the generated SQL statement.

VALIDATE

validate is used for automatic verification of data

Usage Validate($validate)

Parameters validate (required): Automatic verification definition

Return value Current model instance

Remarks Can only be used with the create method Used in conjunction with the

validate method for automatic verification of data, we will describe it in detail in the data verification section.

AUTO

auto is used for automatic data completion

Usage auto($auto)

Parameters auto (required): Define automatic completion

Return value Current model instance

Remarks au The to method can only be used with create Method Usage The

auto method is used for automatic completion of data. The specific use will be described in the data automatic completion section.

SCOPE

scope is used for the named scope of the model

Usage Scope($scope)

Parameters Scope (required): Named scope definition

Return value Current model instance

Remarks Scope method is actually coherent Pre-definition of operations

scope method specific usage can refer to: 3.1’s new feature named scope

FILTER

filter is used for safe filtering of data

usage filter($filter)

parameter filter (required ): Filter method name

Return value Current model instance

Remarks The filter method is generally used for write and update operations

filter method is used for safe filtering of data objects, for example:

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

Currently the filter method does not support filtering by multiple methods.

Summary

Coherent operations bring great convenience to our data operations, and as long as operations that can be achieved by SQL can basically be implemented by ThinkPHP's coherent operations, there is no need to consider the expression between databases Difference, portability. I will explain to you how to operate and obtain variables later.

The above is the content of ThinkPHP3.1 quick start (4) coherent operation. For more related content, please pay attention to the PHP Chinese website (m.sbmmt.com)!


source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!