多対多のデータを扱うのに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テーブルに社員と部署を
連携したデータを保存してくれます。