通常、ここで扱う関連付けには次の 3 つのタイプが含まれます:
◇ 1 対 1 の関連付け: ONE_TO_ONE (HAS_ONE と BELONGS_TO を含む)
◇ 1 対多の関連付け: ONE_TO_MANY (HAS_MANY と BELONGS_TO を含む)
◇ 多対- many association: MANY_TO_MANY
アソシエーション定義
データテーブルの関連付けられた CURD 操作には、現在サポートされている 4 つのタイプがあります: HAS_ONE、BELONGS_TO、HAS_MANY、MANY_TO_MANY。
モデルは、ビジネス モデルの複雑さに応じて、制限なく複数の関連付けを同時に定義できます。すべての関連付け定義は、モデル クラスの $_link メンバー変数で定義され、動的定義をサポートできます。アソシエーション操作をサポートするには、モデル クラスが RelationModel クラスを継承する必要があります。 アソシエーション定義の形式は次のとおりです。
コードをコピーします。 コードは次のとおりです。
protected $_link = array(
' Association 1 ' => array(
' アソシエーション属性 1' => ' 定義',
' アソシエーション属性 N' => ' 定義',
),
' アソシエーション属性 2' => array(
' アソシエーション属性 1' = > '定義',
' アソシエーション属性 N' => '定義',
),
...
);
HAS_ONE アソシエーションメソッドの定義:
コードをコピー コードは次のとおりです。
class UserModel extends RelationModel
{
public $_link = array(
'Profile'=> array(
'mapping_type' =>HAS_ONE,
'class_name'=>'Profile',
// 詳細を定義Associated 属性
...
) ,
);
}
mapping_type アソシエーション タイプ。これは、HAS_ONE アソシエーションの HAS_ONE 定数を使用して定義する必要があります。
class_name 関連付けられるモデルクラスの名前
mapping_name データの取得に使用される関連付けられたマッピング名
foreign_key 関連付けられた外部キー名
condition 関連付けられた条件
mapping_fields クエリ対象のフィールドを関連付けます
as_fields 関連付けられたフィールド値を直接マッピングします
BELONGS_TO 関連付けメソッドのフィールドの定義:
コードをコピー コードは次のとおりです:
'Dept'=> array(
'mapping_type'=>BELONGS_TO,
'class_name'=>'Dept',
'foreign_key'=>'userId',
'mapping_name'=>'dept',
// さらに関連付け属性を定義します
...
) ,
class_name 関連付けられるモデル クラス名
mapping_name データの取得に使用される関連付けられたマッピング名
foreign_key 関連付けられた外部キー名
mapping_fields クエリされる関連付けられたフィールド
condition 関連付けられた条件
parent_key 自己参照関連付けられた関連フィールド
as_fields 関連付けられたフィールドを直接マップする値をデータオブジェクト内のフィールドの関連付けメソッドの定義
HAS_MANY:
コードをコピー コードは次のとおりです:
'Article'=> array(
'mapping_type ' =>HAS_MANY,
'class_name' =>'Article',
'foreign_key'=>'userId',
'mapping_name'=>'articles',
'mapping_order'=>'create_time desc' ,
// さらに関連する属性を定義します... クエリされるフィールド
mapping_limit 関連付けによって返されるレコードの数
mapping_order 関連するクエリの並べ替え
MANY_TO_MANY 関連付けメソッドの定義:
コードをコピーします
コードは次のとおりです:
"Group"=>array(
'mapping_type'=>MANY_TO_MANY,
'class_name'=>'Group',
'mapping_name'=>'グループ'、
'foreign_key'=>'userId'、
'relation_foreign_key'=>'goupId'、
'relation_table'=>'think_gourpUser' ) class_name 関連付けられるモデルクラス名
mapping_name データの取得に使用される関連付けられたマッピング名
foreign_key 関連付けられた外部キー名
relation_foreign_key 関連付けられたテーブルの外部キー名
mapping_limit 関連付けによって返されるレコードの数
マッピング順序 関連付けられたクエリの順序
relationship_table 多対多の中間リレーション テーブル名
リレーション クエリ
リレーション メソッドを使用して相関操作を実行する リレーション メソッドは、相関を有効にするだけでなく、ローカルの相関操作を制御することもでき、すべてを実行します。相関演算の制御下にあります。
$User = D( "User" );
$user = $User->realtion(true)->find(1);
Output $user 結果は次のようなデータになる可能性があります。
コードをコピーします コードは次のとおりです:
array(
'id'=>1,
'account'=>'ThinkPHP',
'password'=>'123456',
'プロフィール'=> ; array(
'メール'=>'liu21st@gmail.com',
'ニックネーム'=>'流年',
)
関連書き込み
コードは次のとおりです: $User = D( "User" );
$data["account"]="ThinkPHP"; ="123456";
$ data["プロフィール"]=array(
'メール'=>'liu21st@gmail.com',
'ニックネーム' =>'流年',
) ; User->relation(true )->add($user);
これにより、関連付けられたプロファイル データが自動的に書き込まれます。
関連付けの更新
コードをコピーします
コードは次のとおりです:
$User = D( "User" ); $data["account"]= "ThinkPHP"; "]= "123456"; $data["プロフィール"]=array( 'email'=>'liu21st@gmail.com',
'ニックネーム' =>'流年',
) ;
$result =$User ->relation(true)->where('id=3')->save($data);
関係の削除
$result =$User->relation(true)- >削除 ( "3" );
http://www.bkjia.com/PHPjc/325937.html
www.bkjia.com
true
http://www.bkjia.com/PHPjc/325937.html
技術記事通常、ここで扱う関連付けには、次の 3 つのタイプが含まれます。 ◇ 1 対 1 の関連付け: ONE_TO_ONE (HAS_ONE と BELONGS_TO を含む) ◇ 1 対多の関連付け: ONE_TO_MANY (HAS_MANY と...を含む)