2011-06-17 92 views
1

我是新来的Zend Framework获得特定列,如何在Zend中使用LEFT JOIN

以下是简单的MySQL查询这需要从表中的特定列,

SELECT jobs_users.id,jobs_users.first_name from jobs_users left join friends on jobs_users.id=friends.friend_id where friends.member_id=29 

我与Zend试图执行上面的查询如下,

public function getFriendsProfileList($id){ 

      $db = Zend_Db_Table::getDefaultAdapter(); 

$select = $db->select(); 
$select->from('jobs_users') 
     ->joinLeft(
       'friends', 
       'jobs_users.id=friends.friend_id', 
       array('jobs_users.id','jobs_users.first_name','jobs_users.last_name','jobs_users.photo') 
       ) 
     ->where("friends.member_id = ?", $id); 
$result = $db->fetchAll($select); 
return $result; 

    } 

这里我得到的结果与所有列名称,而不是与我在查询中给出的确切的列名称。

请帮助我。

+0

多少列你在一排现在越来越和你要多少得到? – NAVEED 2011-06-17 05:53:22

+0

@NAVEED我得到预期的结果与所有行jobs_users.But我只想'jobs_users.id','jobs_users.first_name','jobs_users.last_name','jobs_users.photo'这些列 – mymotherland 2011-06-17 06:04:10

+0

@NAVEED我得到它的工作现在通过设置$ select-> from('jobs_users','') – mymotherland 2011-06-17 06:10:15

回答

1

使用这个代替:

$select->from('jobs_users', array('jobs_users.id','jobs_users.first_name','jobs_users.last_name','jobs_users.photo')) 
->joinLeft('friends', 'jobs_users.id=friends.friend_id') 
->where("friends.member_id = ?", '20'); 
0

你也可以试试这个:

$select = $db->select(); 
$select->setIntegrityCheck(false); 
$select->joinLeft('jobs_users','',array('jobs_users.id','jobs_users.first_name','jobs_users.last_name','jobs_users.photo')); 
$select->joinLeft('friends','jobs_users.id=friends.friend_id', array()); 
$select->where("friends.member_id = ?", $id); 
$result = $db->fetchAll($select); 
return $result; 
+0

在查询中没有from子句。 – 2011-06-17 06:10:07

+0

是的。但它应该工作。我也使用这种类型的方法,它为我工作。我编辑了我的答案。请再次查看。试试这个,告诉我是否有任何错误。 – NAVEED 2011-06-17 06:12:23