2017-01-26 11 views
0

Phalcon \ Mvc \ Model 개체의 query() 메서드를 사용하여 서비스에서 두 테이블을 조인하려고합니다. 페이지를로드 할 때PhalconPHP 테이블을 조인 할 때 검색 오류가 발생했습니다.

$result = $this->templateModel->query() 
          ->columns('\Render\Model\Templates.* ') 
          ->leftJoin('\Render\Model\Branches.*', '\Render\Model\Templates.branchId = b.Branches.id', 'b') 
          ->where("branchId = :branchId:") 
          ->bind(['branchId' => $this->branchData['id']]) 
          ->execute() 
          ->toArray(); 

그러나, 나는 다음과 같은 오류 얻을 : 여기 내 코드의

Phalcon\Mvc\Model\Exception: Scanning error before '\Render\Model\Br...' when parsing: SELECT \Render\Model\Templates.* FROM [Render\Model\Templates] LEFT JOIN [\Render\Model\Branches.*] AS [b] ON \Render\Model\Templates.branchId = b.Branches.id WHERE branchId = :branchId: (187) in /home/vis/projects/stm/app/Service/BranchService.php on line 61 

내가 사용하는 구문은 부여 this Stackoverflow entry (에서 온다, 그것은 최신 포스트 아니지만, 내가 ' m은 여전히 ​​문제가 주로 쿼리 (example1, example2)에서 금지 semicolumns에 대한 결과를 반환 한 결과

. Phalcon 2.0.13을 사용하지만 내 경우에는 문제가 아니다.

조인 줄을 주석 처리하면 쿼리가 제대로 작동하므로 문제가 있어야합니다. 도움이 필요합니다.

+1

''\ Render \ Model \ Branches. * ''를''\ Render \ Model \ Branches' '로 변경하십시오. 조인 할 테이블을 정의해야합니다. 조인 테이블에서 선택하려는 열이 아닙니다. – Timothy

+0

감사합니다. 나는 최근에 심각하게 결석했습니다 ... –

답변

-1

그것은 당신이 같은 것을 할 수 있도록 \Render\Model\Branches는 또한이 모델 관계 별칭을 사용해야해야한다 : 다음

$modelsManager->registerNamespaceAlias('M', 'Render\Model'); 

그리고 그냥 사용 M:Branches

+0

또는 모든 네임 스페이스 물건을 입력하는 대신'Branches :: class'를 사용하십시오. – Timothy

0
SELECT \Render\Model\Templates.* 
FROM [Render\Model\Templates] 
LEFT JOIN [\Render\Model\Branches.*] AS [b] ON \Render\Model\Templates.branchId = b.Branches.id 
WHERE branchId = :branchId: 

난 당신이 조금 SQL 알고 있다고 가정 . PhQL 일지라도 LEFT JOIN [\Render\Model\Branches.*] 부분을 보았을 것입니다. 의심스러워 보입니다. 이 선언에서는 테이블과 열을 조인 할 수 없습니다. 조인은 항상 두 테이블간에 발생합니다.

의 simle 수정 :

// -------------------------------v (removed ".*") 
->leftJoin('\Render\Model\Branches', '\Render\Model\Templates.branchId = b.Branches.id', 'b') 

제대로 \Render\Model\Branches 모델을 선언 한 가정, 당신의 문제를 해결해야한다.