【发布时间】:2020-04-15 10:21:44
【问题描述】:
1.表meeting
型号名称CoreMeeting
字段id, title, start time, created_by
关系:
'MeetingParticipants' => array(self::HAS_MANY, 'MeetingParticipants', 'meeting_id'),
2。表core_meeting_participant
型号名称为meeting_participant
字段为id, meeting_id, participant_id, group_id
关系:
'meeting' => array(self::BELONGS_TO, 'CoreMeeting', 'meeting_id'),
'group' => array(self::BELONGS_TO, 'MeetingGroup', 'group_id'),
3。表core_meeting_group
型号名称为MeetingGroup
字段为id, group_name
我在会议模型中的搜索过滤器是:
public function search()
{
$group=filter_var($_REQUEST['group'], FILTER_SANITIZE_STRING);//contain group name
$criteria=new CDbCriteria;
$user_id = Yii::app()->user->id;
$criteria->compare('id',$this->id);
$criteria->compare('title',$this->title,true);
$criteria->with=array('MeetingParticipants'=>array("select"=>"*"),'MeetingParticipants.group'=>array('select'=>'id,group_name'));
if(isset($this->start_time) && !empty($this->start_time))
$criteria->compare('start_time',date("Y-m-d", strtotime($this->start_time)), true);
$criteria->compare('created_by',$user_id);
if(isset($group)&&!empty($group))
$criteria->compare('group.group_name',$group);
$criteria->together = true;
return new CActiveDataProvider($this, array(
'criteria'=>$criteria,
));
}
我创建了 4 个会议,每个会议至少有 5 个参与者,每个参与者属于一个会议组。我想列出所有具有以下已归档会议标题、组和会议时间的会议。
我的问题是如果我启用$criteria->together = true;,如果会议有超过 10 名参与者,那么网格视图中只会显示 1 个会议。如果我禁用此功能,则会显示所有内容,但我无法使用会议名称进行搜索。
SQL小提琴链接是http://sqlfiddle.com/#!9/fdaacf
完整的 SQL 转储https://pastebin.com/NtpMuCpE
【问题讨论】: