以下を必要とするアプリケーションがあります。
ユーザーは多くのプロジェクトを所有しています。プロジェクトの所有者は 1 人です。
ユーザーは多くのプロジェクトに取り組んでいます。プロジェクトには多くのユーザーがいます。
したがって、users、projects_users、projects の 3 つのテーブルがあります。関係は次のとおりです。
1 人のユーザー (所有者) --- 多くのプロジェクト (created_by)
多くのユーザー (id) ---- projects_users (user_id, project_id) 経由 ---- 多くのプロジェクト (id)。
Codeigniter では、datamapper モデルで次の関係を設定しました。
Class Project extends DataMapper {
var $has_one = array(
'created_by' => array(
'class' => 'user',
'other_field' => 'owns'
)
);
var $has_many = array('user' => array(
'class' => 'user',
'other_field' => 'project',
'join_table' => 'projects_users'));
と...
class User extends DataMapper {
var $has_many = array(
'project' => array(
'class' => 'project',
'other_field' => 'user',
'join_table' => 'projects_users'
),
'owns' => array(
'class' => 'project',
'other_field' => 'created_by'
)
);
ただし、これは機能していないようで、再帰エラーが発生します。この関係をデータマッパーで表現する正しい方法は何ですか?