我遇到了以下问题。我想只显示插入任务本身或负责任务的人的任务,为此,我有以下数据库模式:
table function(员工表)= id, name,等等
table TarefasGerais(任务表)= id, id_functionario(谁插入的),等等
table TarefasResponsaveis(责任人表)= id, id_tarefa(责任人id), id_functionario(责任人id)
在我的模型的搜索方法中,我做了以下操作:
$criteria->with = array('Responsaveis' =>
array('condition' => 'Responsaveis.id_funcionario = ' . Yii::app()->user->dados->id));
$criteria->condition = 'id_funcionario_lancamento = ' . Yii::app()->user->dados->id;
,但它生成以下SQL:
SELECT COUNT(DISTINCT `t`.`id`) FROM `tbl_tarefas_gerais` `t` LEFT OUTER JOIN `tbl_tarefas_gerais_responsaveis` `Responsaveis` ON
(`Responsaveis`.`id_tarefa` = `t`.`id`) WHERE (id_funcionario_lancamento =
3) AND (Responsaveis.id_funcionario = 3)
如您所见,它使用了"AND"操作符,但我需要它在where部分使用"OR"操作符。
I tried:
$criteria->with = array('Responsaveis' =>
array('condition' => 'Responsaveis.id_funcionario = ' . Yii::app()->user->dados->id, 'operator' => 'OR'));
但它没有改变任何东西。
有人知道如何处理吗?
0欢呼/
试试mergeWith
两个标准。
把你的逻辑分成两个标准并合并在一起
$criteria->with = array('Responsaveis' =>
array('condition' => 'Responsaveis.id_funcionario = ' . Yii::app()->user->dados->id));
$criteria2->condition = 'id_funcionario_lancamento = ' . Yii::app()->user->dados->id;
$criteria->mergeWith($criteria2);
完整的示例:
$criteria2 = new CDbCriteria();
$criteria2->addInCondition('startDate', array(null));
$criteria2->addBetweenCondition('startDate', date('Y-m-d'), '1950-01-01', 'OR');
$criteria3 = new CDbCriteria();
$criteria3->addInCondition('stopDate', array(null), 'AND');
$criteria3->addBetweenCondition('stopDate', '1990-01-01', date('Y-m-d'), 'OR');
$criteria3->mergeWith($criteria2);