2012-11-27 3 views
0

정직하게 여기 조금 잃어 버렸습니다. joomla 2.5 용 구성 요소를 만들고 데이터베이스에 "관리자"와 "지점"이라는 두 개의 테이블이 있습니다. 매니저와 지회에 합류하려는 임씨.SQL Join and Json encom joomla 2.5

나는 내가 내 문제에 더 정확하게 수 있었으면 좋겠어하지만 난 솔직히 이해 데이터베이스에 호출을 heres 내 모델 파일 해달라고 : 다음

<?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); 
} 
} 

는 난의 응답 얻을 : 내가 제거하면

[] 

을 "$ 질의 -> ('LEFT', '#__man 가입 agers as USING (manager_id) '); " 내 view.json.php와

[{"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"}}] 

임 있는지의 단지 문제는

내가 인 print_r와 유지로 json_encode에서 변경하는 경우 : 내 대답은 내가 관리자 정보와 함께 원하는이다 (이다 "$ 질의 -> (')를 사용 (MANAGER_ID AS #__managers'을 '에서 왼쪽) 조인"난의 응답 얻을 :

Array 
(
) 
1 

너무 확실히 그 단지 방식 IM 데이터를 출력

+0

테이블 스키마를 게시하지 않았으므로 LEFT JOIN 조건에서 두 테이블 모두에 manager_id 열이 있는지 묻습니다. –

+0

데이터베이스의 테이블을 참조하고 있습니까? 답장을 보내 주셔서 감사합니다 ... 그렇다면 모두 두 테이블에 있습니다. –

+0

$ db = $ this-> getDbo();를 바꿔보십시오. ~ $ db = JFactory :: getDBO(); –

답변

0

손쉬운 :

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; 
} 

누구에게나 감사합니다. :)