CakePHPのHasAndBelongsToManyを使う

| トラックバック(0)
多対多のデータを扱うのにHasAndBelongsToManyをモデルで指定してあげると 簡単にデータの取り出しや保存が出来ました。

今回は社員が複数の部署に属すという仕様で使いました。
テーブルは次のようにしました。
parts(部署テーブル)、
users(社員テーブル)、
parts_users(部署・社員連携テーブル)
部署・社員連携テーブルは繋げたいテーブルを「_」で連結させてテーブル名とします。
parts_usersのフィールドは「part_id、user_id」となります。

次にPartsUserモデルを作っていないとエラーになるので作っておきます。
class PartsUser extends AppModel
{
	var $name = 'PartsUser';
	var $useTable = 'parts_users';
}
Userモデルで
class User extends AppModel
{
	var $name = 'User';
	var $useTable = 'users';
	var $hasAndBelongsToMany = array('Part');
}
と記述してあげるとUserモデルでセレクトして得られた配列に 所属している部署全てが取得できています。

データの取得はこれですんなりと上手くいったのですがデータの保存が あまり資料が無くはまりました。
データをセレクトで取得した形式でsaveしてあげても上手く保存が出来ません。
ではどういう配列構造で保存してあげればいいのか、
$this->data['Part']['Part'][0] = 部署番号
$this->data['Part']['Part'][1] = 部署番号
$this->data['Part']['Part'][2] = 部署番号
・
・
・
という感じにデータを持たしてあげるとparts_usersテーブルに社員と部署を 連携したデータを保存してくれます。

トラックバック(0)

このブログ記事を参照しているブログ一覧: CakePHPのHasAndBelongsToManyを使う

このブログ記事に対するトラックバックURL: http://www.okushin.co.jp/mt_co_jp/mt-tb.cgi/31