問題の 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
。events
ASEvent
LEFT JOINscheduling
.projects
ASProject
ON (Event
.project_id
=Project
.id
) LEFT JOINscheduling
.users
ASUser
ON (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
。events
ASEvent
LEFT JOINscheduling
.projects
ASProject
ON (Event
.project_id
=Project
.id
) LEFT JOINscheduling
.users
ASUser
ON (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',
),
),