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

Popular posts from this blog

.htaccess - First slash is removed after domain when entering a webpage in the browser -

Automatically create pages in phpfox -

c# - Farseer ContactListener is not working -