質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Doctrine2

Doctrine 2.0はPHP(5.3.2+)のORMです。Doctrine1.2はActive Recordのパターンを使っているのに対し、Doctrine 2はData Mapperパターンを使います。Doctrineのプロジェクトはデータベースの抽象性とPHPで書かれたORMを扱うためのオープンソースのライブラリとツールの集合です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

EC-CUBE

EC-CUBEは、主に日本国内で開発されているECコンテンツ管理システムです。ロックオン社のECKitを元にしてオープンソース化され、商品管理・受注管理・顧客管理・売上集計などECに特化した様々な機能を備えています。

Q&A

解決済

1回答

3756閲覧

DoctrineのQueryBuilderでsetParameterが意図したとおりに動作しない

退会済みユーザー

退会済みユーザー

総合スコア0

Doctrine2

Doctrine 2.0はPHP(5.3.2+)のORMです。Doctrine1.2はActive Recordのパターンを使っているのに対し、Doctrine 2はData Mapperパターンを使います。Doctrineのプロジェクトはデータベースの抽象性とPHPで書かれたORMを扱うためのオープンソースのライブラリとツールの集合です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

EC-CUBE

EC-CUBEは、主に日本国内で開発されているECコンテンツ管理システムです。ロックオン社のECKitを元にしてオープンソース化され、商品管理・受注管理・顧客管理・売上集計などECに特化した様々な機能を備えています。

0グッド

0クリップ

投稿2016/02/23 08:29

doctrineのQueryBuilderを使ってデータベースの検索を行おうとしています。
その中でsetParameterを使いパラメータを当て込んでいるのですが、クエリの実行がうまくいきません。
原因を調べるためにクエリ文を出力してみたところ、setParameterで値を入れている部分が「?」になっていて本来入るべき値になっていませんでした。

php

1$query = $app['orm.em'] 2 ->createQueryBuilder() 3 ->select('cm') 4 ->from('Plugin\EiteEC\Sample\CustomerMember', 'cm') 5 ->where('cm.Member = :member_id') 6 ->setParameter('member_id', $member_id) 7 ->getQuery(); 8error_log($query->getSql()); // クエリ文の出力 9$CustomerMember = $query->getSingleResult(); // 当然レコードが無いのでNoResultException

sql

1/* 出力したクエリ文 */ 2SELECT 3p0_.customer_member_id AS customer_member_id0, 4p0_.customer_id AS customer_id1, 5p0_.member_id AS member_id2 6FROM plg_customer_member p0_ WHERE p0_.member_id = ?

どのように修正すればパラメータがセットされるようになるでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

t_obara

2016/02/23 09:03

パッと見問題ないように見えるのですが、$menber_id には想定した情報が格納されていて、?の場所にその情報を入れると、正常にクエリ結果が返却される状態だけれども、パラメータがセットされない点だけが解決できていないという理解で良いのでしょうか?
退会済みユーザー

退会済みユーザー

2016/02/24 00:01

その通りです。$member_idの中が正しい値になっていることは確認して、さらに setParameter('member_id', 1) のように固定値を入れてもみましたが変わりありませんでした。
t_obara

2016/02/24 02:13

setParameterではなく、where('cm.member_id = ?1') とするとどのような結果となるでしょう?
退会済みユーザー

退会済みユーザー

2016/02/25 02:49

where('cm.member_id = ?1')で行っても変わりありませんでした。 そもそもどうやらgetSqlで出力した際に ? になっているのは正常なようで、正しい結果が得られないのはどうやら他の部分にあるようでした。 よって、質問そのものが正しくなかったようなのでクローズいたします。 ご回答ありがとうございました。
guest

回答1

0

ベストアンサー

質問事項を誤っていたのでクローズします。

投稿2016/02/25 02:50

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問