通常、ここで説明する関連付けには、次の 3 つのタイプが含まれます。
◇ 1 対 1 の関連付け: ONE_TO_ONE (HAS_ONE および BELONGS_TO を含む)
◇ 1 対多の関連付け: ONE_TO_MANY (HAS_MANY および BELONGS_TO を含む)
◇Many 多くの関連付けの場合: MANY_TO_MANY
Association 定義
データテーブルの連想 CURD 操作 現在サポートされている関連付けには、HAS_ONE、HAS_ONE の 4 つのタイプが含まれます。 BELONGS_TO、HAS_MANY、MANY_TO_MANY。
モデルは、ビジネス モデルの複雑さに応じて同時に複数の関連付けを制限なく定義できます。すべての関連付け定義はモデル クラスの $_link メンバー変数で定義され、動的定義をサポートできます。アソシエーション操作をサポートするには、モデル クラスが RelationModel クラスを継承する必要があります。 アソシエーション定義の形式は次のとおりです。
コードをコピーします コードは次のとおりです。 🎜>
protected $_link = array(
' アソシエーション 1' => array(
' アソシエーション属性 1' => ' 定義',
' アソシエーション属性 N' => ' 定義',
),
' アソシエーション 2' => array(
' アソシエーション属性 1' => ' 定義',
' アソシエーション属性 N' => ' 定義',
),
...
);
コードをコピーします
class UserModel extends RelationModel
{
public $_link = array(
'Profile'=> array(
'mapping_type' => HAS_ONE,
'class_name'=>'Profile',
// さらに関連する属性を定義します
...
) ,
)
mapping_type アソシエーション タイプ。これは、HAS_ONE アソシエーションの HAS_ONE 定数を使用して定義する必要があります。
コードをコピー コードは次のとおりです:
'Dept'=> array('mapping_type'=>BELONGS_TO,
'class_name'=>'Dept',
' external_key'= >'userId',
'mapping_name'=>'dept',
// さらに関連する属性を定義します
...
) ,
class_name 関連付けられるモデル クラス名
コードをコピー コードは次のとおりです:
'Article'=> array('mapping_type' =>HAS_MANY,
'class_name'= >'記事',
'foreign_key'=>'userId',
'mapping_name'=>'articles',
'mapping_order'=>'create_time desc',
/ / さらに関連する属性を定義します
....
) ,
class_name 関連付けられるモデル クラス名
コードをコピー コードは次のとおりです:
"グループ"=>array('mapping_type' =>MANY_TO_MANY,
'class_name'=>'グループ',
'mapping_name'=>'グループ',
' foreign_key'=>'userId',
'relation_foreign_key' =>'goupId',
'relation_table'=>'think_gourpUser'
)
class_name モデル関連付けられるクラス名
コードは次のとおりです: コードをコピー コードは次のとおりです: コードをコピー コードは次のとおりです: $data["account"]= "ThinkPHP";
array(
'id'=>1,
'アカウント'=>'ThinkPHP',
'パスワード'=>'123456',
'プロファイル'=> array(
'メール'=>'liu21st@gmail.com',
'ニックネーム'=>'つかの間',
) ,
)
関連書き込み
$User = D( "User" ) ;
$data = array();
$data["パスワード"]="123456"; ]= array(
'email'=>'liu21st@gmail.com',
'nickname' =>' つかの間の年',
) ;
$result = $User-> ;relation( true)->add($user);
これにより、関連付けられたプロファイル データが自動的に書き込まれます。
関連付けの更新
$data["password"]= "123456";
$data["Profile"]=array(
' email'= >'liu21st@gmail.com',
'nickname' =>'流年',
) ;
$result =$User->where ('id =3')->save($data);
関係の削除
$result =$User->relation(true)->delete( "3" );