2012-10-23 2 views
3

zf1을 zf2로 이동하려고하는데 내 매퍼를 이동하는 데 많은 문제가 있습니다. 분명히 가, 난 그냥 내 쿼리 과거/(! 너무 나쁜) 복사 할 수 없습니다ZF2에서 join SQL 요청에 CONCAT을 사용하는 방법

나는 내가 $select->getSqlString()을 인쇄 할 경우

$resultSet = $this->select(function (Select $select) use($userId, $filter, $status){ 

$select->columns(array("id_project", "name", "current_to", "avancement")); 
$prj = "PRJ_"; 
$select->join(array("ru" => "role_users"), "CONCAT($prj , projects.id_project) = ru.element", array()) 
        ->where("ru.user_id = $userId"); 

같은 조인에 CONCAT를 사용하는 것을 시도하고, 내가 얻을 :

SELECT "projects"."id_project" AS "id_project", "projects"."name" AS "name", 
    "projects"."current_to" AS "current_to", "projects"."avancement" AS "avancement" FROM 
"projects" INNER JOIN "role_users" AS "ru" ON "CONCAT"("PRJ_" "," "projects"."id_project" 
) = "ru"."element" WHERE ru.user_id = 3 
에 대한

Apport 모든 "zf2이 그것을 실행하면, 나는 오류가 발생"과 phpMyAdmin에 그것을 실행 "나는 제거 모든 경우, 이것은 (정확", 작동 그러나 :

.
SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in 
your SQL syntax; check the manual that corresponds to your MySQL server version 
for the right syntax to use near '`projects`.`id_project`) = `ru`.`element` 
WHERE ru.user_id = 3' at line 1 

CONCAT()에 문제가있는 것 같지만 문제가있는 곳을 찾을 수 없습니다.

답변

0

이 나는 ​​매우 우아하지 찾을 그것은 작동 :

$select->join(array("ru" => "role_users"), 
new Expression("CONCAT($prj , projects.id_project) = ru.element"), array()) 
->where("ru.user_id = $userId"));