3

zf1 アプリを zf2 に移動していますが、マッパーを移動するのに多くの問題があります。どうやら、クエリをコピー/貼り付けすることはできません (残念です!)

私はCONCATのような結合で使用しようとしています

$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");

を印刷する$select->getSqlString()と、次のようになります。

    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

すべての " " に適用されます。これは正しいです (すべての "" を削除して phpmyadmin で実行すると動作しますが、zf2 で実行するとエラーが発生します:

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()ますが、どこに問題があるのか​​ わかりません。

4

1 に答える 1

0

これはあまりエレガントではありませんが、機能します:

$select->join(array("ru" => "role_users"), 
new Expression("CONCAT( $prj , projects.id_project ) = ru.element"), array())
->where("ru.user_id = $userId"));
于 2012-11-12T09:01:05.447 に答える