Home >Backend Development >PHP Tutorial >ThinkPHP's association model

ThinkPHP's association model

不言
不言Original
2018-06-07 17:10:493174browse

ThinkPHP association model operation example analysis, friends who need it can refer to it

Usually the association relationships we talk about include the following three types:
◇ One-to-one association: ONE_TO_ONE, including HAS_ONE and BELONGS_TO
◇ One-to-many association: ONE_TO_MANY, including HAS_MANY and BELONGS_TO
◇ Many-to-many association: MANY_TO_MANY
Association definition
Associated CURD operations of data tables, currently supported relationships Including the following four types: HAS_ONE, BELONGS_TO, HAS_MANY, MANY_TO_MANY
A model can define multiple associations at the same time according to the complexity of the business model without restrictions. All association definitions are unified in the $_link member variable of the model class. , and can support dynamic definition. To support association operations, the model class must inherit the RelationModel class. The format of the association definition is:

protected $_link = array( 
' 关联 1' => array( 
' 关联属性 1' => ' 定义 ', 
' 关联属性 N' => ' 定义 ', 
), 
' 关联 2' => array( 
' 关联属性 1' => ' 定义 ', 
' 关联属性 N' => ' 定义 ', 
), 
... 
);

HAS_ONE The definition of the association method:

class UserModel extends RelationModel 
{ 
public $_link = array( 
'Profile'=> array( 
'mapping_type' =>HAS_ONE, 
'class_name'=>'Profile', 
// 定义更多的关联属性 
…… 
) , 
); 
}

mapping_type Association type, this must use HAS_ONE in the HAS_ONE association Constant definition.
class_name The model class name to be associated
mapping_name The associated mapping name, used to obtain data
foreign_key The associated foreign key name
condition The associated condition
mapping_fields The associated fields to be queried
as_fields directly maps the associated field value to a field in the data object
BELONGS_TO Definition of the association method:

'Dept'=> array( 
'mapping_type'=>BELONGS_TO, 
'class_name'=>'Dept', 
'foreign_key'=>'userId', 
'mapping_name'=>'dept', 
// 定义更多的关联属性 
…… 
) ,

class_name The name of the model class to be associated
mapping_name The associated mapping name, use Use
foreign_key to obtain data. The associated foreign key name
mapping_fields is associated with the field to be queried.
condition The associated condition
parent_key is a self-referential associated associated field.
as_fields directly maps the associated field value to A field in the data object
HAS_MANY Definition of association method:

'Article'=> array( 
'mapping_type' =>HAS_MANY, 
'class_name'=>'Article', 
'foreign_key'=>'userId', 
'mapping_name'=>'articles', 
'mapping_order'=>'create_time desc', 
// 定义更多的关联属性 
…… 
) ,

class_name The name of the model class to be associated
mapping_name The associated mapping name, used to obtain data associated with
foreign_key Foreign key name
parent_key Self-referential association related fields
condition Association conditions
mapping_fields Association fields to be queried
mapping_limit Number of records to be returned by association
mapping_order Order of association query
MANY_TO_MANY Definition of association method:

"Group"=>array( 
'mapping_type'=>MANY_TO_MANY, 
'class_name'=>'Group', 
'mapping_name'=>'groups', 
'foreign_key'=>'userId', 
'relation_foreign_key'=>'goupId', 
'relation_table'=>'think_gourpUser' 
)

class_name The name of the model class to be associated
mapping_name The associated mapping name, used to obtain data
foreign_key The associated foreign key name
relation_foreign_key The foreign key of the associated table Key name
mapping_limit Number of records to be returned by association
mapping_order Sorting of association query
relation_table Many-to-many intermediate association table name
Association query
Use the relation method to perform association operations. The relation method is not only You can enable association and control local association operations, so that all association operations are under control.

$User = D( "User" ); 
$user = $User->realtion(true)->find(1);

Output $user The result may be data similar to the following:

array( 
'id'=>1, 
'account'=>'ThinkPHP', 
'password'=>'123456', 
'Profile'=> array( 
'email'=>'liu21st@gmail.com', 
'nickname'=>'流年', 
) , 
)

Associated writing

$User = D( "User" ); 
$data = array(); 
$data["account"]="ThinkPHP"; 
$data["password"]="123456"; 
$data["Profile"]=array( 
'email'=>'liu21st@gmail.com', 
'nickname' =>' 流年 ', 
) ; 
$result = $User->relation(true)->add($user);

This will automatically write the associated Profile data.
Association update

$User = D( "User" ); 
$data["account"]= "ThinkPHP"; 
$data["password"]= "123456"; 
$data["Profile"]=array( 
'email'=>'liu21st@gmail.com', 
'nickname' =>' 流年 ', 
) ; 
$result =$User-> relation(true)->where(‘id=3')->save($data);

Association deletion

$result =$User->relation(true)->delete( "3" );

The above is the entire content of this article. I hope it will be helpful to everyone's study. For more related content, please pay attention to the PHP Chinese website!

Related recommendations:

[ThinkPHP]Related query issues

The above is the detailed content of ThinkPHP's association model. For more information, please follow other related articles on the PHP Chinese website!

Statement:
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