2012-11-27 31 views
0

好生病老實說我在這裏一點點的失落,林爲Joomla 2.5創建組件,並在數據庫中,「經理」,另一個叫「分行」兩個表。我試圖加入分支機構的經理。SQL加入和JSON編碼的Joomla 2.5

我希望我能與我的問題更精確,但老實說,我不明白它,調用數據庫繼承人我的模型文件:

<?php 
defined('_JEXEC') or die; 

jimport('joomla.application.component.model'); 

class LocateModelBranches extends JModel 
{ 
public function getItem() 
{ 
    $branch_id = JRequest::getInt('id'); 

    $row = JTable::getInstance('branches', 'LocateTable'); 
    $row->load($branch_id); 

    return $row; 
} 

public function getBranches() 
{ 
    $branch_id = JRequest::getInt('id'); 

    $db = $this->getDbo(); 
    $query = $db->getQuery(true); 

    $query->select('*'); 
    $query->from('#__branches'); 
    $query->join('LEFT', '#__managers AS a USING(manager_id)'); 
    $query->where("published = 1"); 

    $db->setQuery($query); 

    $rows = $db->loadObjectList(); 

    return $rows; 
} 
} 

然後我view.json.php文件:

<?php 
defined('_JEXEC') or die; 

jimport('joomla.application.component.view'); 

class LocateViewBranches extends JView 
{ 
public function display($tpl = null) 
{ 
    $branch = $this->get('Branches'); 
    $response = array(); 

    foreach ($branch as $row) { 
      $response[] = array(
        'lat' => $row->branch_latitude, 
        'lng' => $row->branch_longitude, 
        'data' => array(
         'name' => $row->branch_name, 
         'address' => $row->branch_address, 
         'fax' => $row->branch_fax, 
         'email' => $row->branch_email, 
         'city' => $row->branch_city, 
         'telephone' => $row->branch_telephone, 
         'id' => $row->branch_id, 
         'lati' => $row->branch_latitude, 
         'lngi' => $row->branch_longitude, 
         'manager_id' => $row->manager_id, 
        ), 
       ); 
     } 
    echo json_encode($response); 
} 
} 

然後我得到的迴應:

[] 

如果我刪除「$查詢 - >加入( '左',「#__man作爲使用者(manager_id)'的年齡者');「然後我的反應是(這是我想隨着管理人員的詳細信息:

[{"lat":"-33.9249","lng":"18.4241","data":{"name":"test 2","address":"greenpoint, Cape Town","fax":"044 382 0605","email":"test","city":"blah","telephone":"044 382 0605","id":"2","lati":"-33.9249","lngi":"18.4241"}},{"lat":"-34.0438","lng":"23.0759","data":{"name":"jam factory","address":"15 meeu street knysna","fax":"00000000","email":"00000000","city":"am factory","telephone":"0000000","id":"14","lati":"-34.0438","lngi":"23.0759"}}] 

我敢肯定,它只是一個與我view.json.php問題

另外,如果我從json_encode改變print_r的,並保持「$查詢 - >加入( '左', '#__managers AS一個使用(經理標識)');」 我得到的迴應:

Array 
(
) 
1 

所以肯定它就是IM的方式輸出數據

+0

由於您沒有發佈您的表架構,我必須問您是否在LEFT JOIN情況下column manager_id存在於兩個表中。 –

+0

你是指數據庫中的表?非常感謝你的回覆...如果是這樣,那麼是的,它是在兩個表 –

+0

嘗試更換$ db = $ this-> getDbo();到$ db = JFactory :: getDBO(); –

回答

0

Easy as:

public function getBranches() 
{ 
    $branch_id = JRequest::getInt('id'); 

    $db = $this->getDbo(); 
    $query = $db->getQuery(true); 

    $query->select('*, a.manager_name,manager_mobile'); 
    $query->from('#__branches AS t') 
      ->join('LEFT', '#__managers AS a USING(manager_id)') 
      ->where('t.published = 1'); 

    $db->setQuery($query); 

    $rows = $db->loadObjectList(); 

    return $rows; 
} 

謝謝大家的意見。 :)