問題の 2 つのモデルは、プロジェクトとイベントです。
関係は次のとおりです。
var $belongsTo = array(
'Project' => array(
'className' => 'Project',
'foreignKey' => 'project_id'
),
var $hasMany = array(
'Event' => array(
'className' => 'Event',
'foreignKey' => false,
'dependent' => false,
),
問題は、すべてのプロジェクトを一覧表示しようとすると、イベントが関連付けられているものだけが一覧表示されることです。これが解決されることを楽しみにしています。
これが私が得るクエリです:
選択し
Eventます。id、Event。project_id、Event。user_id、Event。date、Event。hours、Event。minutes、Event。xhours、Event。xminutes、Event。xdetails、Event。assignment、Event。start_time、Project。id、Project。name、Project。customer_id、Project。project_nr、Project。address、Project。post_nr、Project。city、Project。company_id、User。id、User。employee_nr、User。name、User。surname、User。User。password、User。role、User。phone、User。address、User。post_nr、User。city、User。token_hash、User。company_idからscheduling。eventsASEventLEFT JOINscheduling.projectsASProjectON (Event.project_id=Project.id) LEFT JOINscheduling.usersASUserON (Event.user_id=User.id) WHERE 1 = 1 LIMIT 15
最後の更新後に取得するクエリは次のとおりです。
選択し
Eventます。id、Event。project_id、Event。user_id、Event。date、Event。hours、Event。minutes、Event。xhours、Event。xminutes、Event。xdetails、Event。assignment、Event。start_time、Event。material_id、Event。km_drive、Event。time_drive、Event。finish_time、Project。id、Project。name、Project。customer_id、Project。project_nr、Project。address、Project。post_nr、Project。city、Project。company_id、Project。color、User。id、User。employee_nr、User。name、User。surname、User。User。password、User。role、User。phone、User。address、User。post_nr、User。city、User。token_hash、User。company_id、User。car_idからscheduling。eventsASEventLEFT JOINscheduling.projectsASProjectON (Event.project_id=Project.id) LEFT JOINscheduling.usersASUserON (Event.user_id=User.id) WHERE 1 = 1 LIMIT 20
プロジェクトをリストしようとしたときに取得する配列は次のとおりです。
array(
(int) 0 => array(
'Event' => array(
'id' => '57',
'project_id' => '13',
'user_id' => '1',
'date' => '2013-08-07',
'hours' => '2',
'minutes' => '35',
'start_time' => '00:00:00',
),
'Project' => array(
'id' => '13',
'name' => 'new project',
'customer_id' => '2',
'project_nr' => '215',
'company_id' => '1',
),
'User' => array(
'password' => '*****',
'id' => '1',
'employee_nr' => null,
'role' => 'manager',
'phone' => '11 12 13 14',
'token_hash' => null,
'company_id' => '1',
'car_id' => null
)
),
(int) 1 => array(
'Event' => array(
'id' => '72',
'project_id' => '13',
'user_id' => '1',
'date' => '2013-08-08',
'hours' => '5',
'minutes' => '35',
'start_time' => '00:00:00',
),
'Project' => array(
'id' => '13',
'name' => 'new project',
'customer_id' => '2',
'project_nr' => '215',
'company_id' => '1',
),
'User' => array(
'password' => '*****',
'id' => '1',
'employee_nr' => null,
'role' => 'manager',
'phone' => '11 12 13 14',
'token_hash' => null,
'company_id' => '1',
'car_id' => null
)
),
したがって、基本的に、関連するプロジェクトを含むイベントのリストと、関連する顧客を含まないイベントのリストを取得します。私が取得したいのは、次のような配列です。
(int) 1 => array(
'Project' => array(
'id' => '13',
'name' => 'old project',
'customer_id' => '2',
'project_nr' => '215',
),
'Customer' => array(
'id' => '2',
'project_id' => '13',
'address' => 'abc',
'initials' => 'HUJ',
),
),