php - Zend Framwork select() gives unexpected SQL -
for application have method in messages model returns messages sent current user ($id). returns information 3 tables using 3 joins. both sender , recipient come same 'users' table, had alias these columns.
method in messages model:
public function getsentmessages($id) { $messagemodel = new self(); $select = $messagemodel->select() ->from(array('m' => 'messages'), array('m.id', 'm.title', 'm.send', 's.id s_id', 's.firstname s_fn', 's.lastname s_ln', 's.email s_e', 'r.id r_id', 'r.firstname r_fn', 'r.lastname r_ln', 'r.email r_e')) ->join(array('s' => 'users'), 'm.from = s.id') ->join(array('mu' => 'messages_users'), 'm.id = mu.message_id') ->join(array('r' => 'users'), 'r.id = mu.user_id') ->where('m.from = ?', $id); $select->setintegritycheck(false); $messages = $messagemodel->fetchall($select); return $messages; }
strange things happening: resultrow made out of columns i'd requested... somehow columns (includuding ones didn't request) added after. this:
id title send s_id s_firstname s_lastname s_email r_id r_firstname r_lastname r_email id username password firstname lastname email role id message_id user_id status id username password firstname lastname email role
i found out sql query returned zend framework not how expected be.. here (cleaned better readability):
select m.id, m.title, m.send, s.id s_id, s.firstname s_fn, s.lastname s_ln, s.email s_e, r.id r_id, r.firstname r_fn, r.lastname r_ln, r.email r_e, s. * , mu. * , r. * messages m inner join users s on m.from = s.id inner join messages_users mu on m.id = mu.message_id inner join users r on r.id = mu.user_id ( m.from = '12345' )
check these asterixes (*) @ end of select statement.. how did these there? zend documentations tells me asterix used when no columns given..
thanks help!
join has 3 parameters:
add blank value @ end of each join clause..
join(array('s' => 'users'),'m.from = s.id','')
Comments
Post a Comment