How to use multiple on clause in joining in zend framework 2 -
i doing sql zend framework sql pattern.
select jobs . *, c.id cid, c.name name, c.companyimage companyimage, c.logo logo, count(app.userid) t_app, app.applystatus applystatus, app.userid appuserid jobs left join companies c on jobs.companyname = c.id left join applicants app on jobs.id = app.jobid , app.applystatus = 1 jobs.ownerid = 16 , jobs.draftid != 0 group jobs.id order jobs.id desc limit 3 for sql write code zend framework 2
$adapter = $this->tablegateway->getadapter(); $sql = new sql($adapter); $select = $sql->select(); $select->from('jobs') ->join(array('c' => 'companies'), 'jobs.companyname = c.id', array('cid' => 'id', 'name', 'companyimage', 'logo'), 'left') ->join(array('app' => 'applicants'), ' jobs.id = app.jobid , app.applystatus = 1', array('t_app' => new expression('count(app.userid)'), 'applystatus', 'appuserid' => 'userid'), 'left') ->where("jobs.ownerid ={$userid} , jobs.draftid != 0") ->group('jobs.id') ->order('jobs.id desc') ->limit(3); $statement = $sql->getsqlstringforsqlobject($select); $results = $adapter->query($statement, $adapter::query_mode_execute); but not work , give message below.
sqlstate[42s22]: column not found: 1054 unknown column '1' in 'on clause'
the issue part:
app.applystatus = 1 the framework escaping 1 if column name, 1.
you need enclose part in expression too
new expression('jobs.id = app.jobid , app.applystatus = 1') i think use of expressions in 'on' parameter of join method may depend on version of zf2 using, think added 2.1+
Comments
Post a Comment