Mysql zend framework 2.2中带括号的查询
我希望我的查询如下:Mysql zend framework 2.2中带括号的查询,mysql,zend-framework2,zend-db,zend-db-select,Mysql,Zend Framework2,Zend Db,Zend Db Select,我希望我的查询如下: SELECT tbl_bids. * , tbl_department.vDeptName, tbl_user.vFirst FROM tbl_bids LEFT JOIN tbl_bids_department ON tbl_bids_department.iBidID = tbl_bids.iBidID LEFT JOIN tbl_department ON tbl_department.iDepartmentID = tbl_bids_department.iDepa
SELECT tbl_bids. * , tbl_department.vDeptName, tbl_user.vFirst
FROM tbl_bids
LEFT JOIN tbl_bids_department ON tbl_bids_department.iBidID = tbl_bids.iBidID
LEFT JOIN tbl_department ON tbl_department.iDepartmentID = tbl_bids_department.iDepartmentID
LEFT JOIN tbl_user ON tbl_user.iUserID = tbl_bids.iUserID
WHERE tbl_user.iUserID = '1' // with parantheses in where clause
AND (
tbl_department.vDeptName = 'PHP'
OR tbl_department.vDeptName = 'android'
)
GROUP BY tbl_bids.iBidID
ORDER BY iBidID DESC
LIMIT 0 , 30
但是我找不到在我的查询中获取偏执的方法,有多个条件和循环将在那里生成where子句。。
这是我的密码
$select = $this->tableGateway->getSql()->select();
$select->columns(array('*'))
->join('tbl_bids_department', 'tbl_bids_department.iBidID = tbl_bids.iBidID', array(),"LEFT")
->join('tbl_department', 'tbl_department.iDepartmentID = tbl_bids_department.iDepartmentID',array(tbl_department.vDeptName),"LEFT")
->join('tbl_user', 'tbl_user.iUserID = tbl_bids.iUserID',array(tbl_user),"LEFT")
->group('tbl_bids.iBidID');
$where = new \Zend\Db\Sql\Where();
$where->equalTo( 'tbl_bids.eDeleted', '0' );
$sWhere = new \Zend\Db\Sql\Where();
for ( $i=0 ; $i<count($aColumns) ; $i++ )
{
if (isset($data['sSearch_'.$i]) && $data['sSearch_'.$i] != "")
{
if($aColumns[$i] == 'vDeptName'){
$allDept = explode(',', $data['sSearch_'.$i]);
foreach ($allDept as $key => $value) {
if($key == 0)
$sWhere->AND->equalTo("tbl_department.vDeptName", $value);
else
$sWhere->OR->equalTo("tbl_department.vDeptName", $value);
}
}elseif($aColumns[$i] == 'vFirst')
$sWhere->AND->equalTo("tbl_user.iUserID",$data['sSearch_'.$i]);
else
$sWhere->AND->like("tbl_bids.".$aColumns[$i], "%" . $data['sSearch_'.$i] . "%");
$select->where($sWhere); // here my where clause is create
}
}
//var_dump($select->getSqlString());
$resultSet = $this->tableGateway->selectWith($select);
return $resultSet;
}
$select=$this->tableGateway->getSql()->select();
$select->columns(数组('*'))
->join('tbl\u bids\u department','tbl\u bids\u department.ibidd=tbl\u bids.ibidd',数组(),“左”)
->加入('tbl_department','tbl_department.iDepartmentID=tbl_bids_department.iDepartmentID',数组(tbl_department.vDeptName),“左”)
->join('tbl_user','tbl_user.iUserID=tbl_bids.iUserID',数组(tbl_user),“LEFT”)
->集团(“tbl_bids.iBidID”);
$where=new\Zend\Db\Sql\where();
$where->equalTo('tbl_bids.eDeleted','0');
$sWhere=new\Zend\Db\Sql\Where();
对于($i=0;$i$value){
如果($key==0)
$sWhere->AND->equalTo(“tbl_department.vDeptName”,$value);
其他的
$sWhere->OR->equalTo(“tbl_department.vDeptName”,$value);
}
}elseif($aColumns[$i]=='vFirst')
$sWhere->AND->equalTo(“tbl_user.iUserID”,$data['sSearch'.$i]);
其他的
$sWhere->AND->like(“tbl_出价”。$aColumns[$i],“%”,“%”,$data['sSearch'.$i]。“%”);
$select->where($sWhere);//这里我的where子句是create
}
}
//var_dump($select->getSqlString());
$resultSet=$this->tableGateway->selectWith($select);
返回$resultSet;
}
我还有其他许多领域需要通过,其中也有相同的并列问题
如果没有任何条件,我可以使用nest()和unnest()谓词,但它会告诉我字符串不是嵌套错误,
所以请帮我找到解决办法。
请附上示例和解决方案。这里是一个简短的示例
$where = new Sql\Where();
$where->equalTo('col',thirdVal')
->NEST //start braket
->equalTo('col','someVal')
->OR
->equalTo('col','secondVal')
->UNNEST //close bracet
希望这将有助于