0
사용자 모델은 관계에 따라 있습니다Yii2 hasMany의이
public function getWorkload() : ActiveQuery
{
return $this->hasMany(ScheduleWorkload::className(), ['staff_id' => 'id']);
}
찾기 방법 : I 설정 결과에 uw.staff_id없이 데이터를 얻을 필요
$staffs = User::find()
->alias('u')
->joinWith(['workload as uw' => function($q) {
$q->select(['uw.staff_id', 'uw.date', 'uw.time_ranges']);
}], true)
->select([
'u.id',
'CONCAT(u.first_name, \' \', u.last_name) as name',
'u.first_name',
'u.last_name',
'u.undelivered_messages',
])
->where(['u.is_staff' => 1])
->asArray()
->all()
;
? 후 처리없이 가능합니까?
업데이트 : 내가 배열 매개 변수로 "작업"을 필요로하지만, 후 처리를 사용하고 단지 결과 집합에서 "staff_id"을 배제하지 않는
이 결과 세트입니다.
원시 SQL : ActiveQuery
합류 관계에 대한 중첩 된 배열을 구축하는 중첩 된 쿼리 결과에서 외래 키를 검색하기 때문에
SELECT `u`.`id`, `u`.`undelivered_messages`
FROM `user` `u`
LEFT JOIN `schedule_workload` `uw` ON `u`.`id` = `uw`.`staff_id`
WHERE `u`.`is_staff`=1
어떤 결과 세트 당신이 지금해야합니까? 변수'$ staffs'는'ActiveQuery' 타입입니다. '$ staffs-> createCommand() -> rawSql'의 결과는 무엇입니까? – oakymax
게시물을 업데이트합니다. 업데이트 섹션을보십시오. $ staffs는 배열입니다. 내가 잊어 버린 포함 -> asArray() -> all() – johndoek