バージョン選択

フォーラム

メニュー

オンライン状況

38 人のユーザが現在オンラインです。 (32 人のユーザが フォーラム を参照しています。)
登録ユーザ: 0
ゲスト: 38
もっと...

サイト内検索

 > フロント機能 > DBを連結させ、Twigで表示させたい

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
boss12
投稿日時: 2016/3/22 16:08
対応状況: −−−
常連
登録日: 2016/2/17
居住地:
投稿: 53
DBを連結させ、Twigで表示させたい
ECCUBE3.0系 ver3.09
新しくページtestpage.twigを作り、controllerに

$Product = $app['orm.em']->getRepository('\Eccube\Entity\Product')
->findBy(
array('id' => 'DESC')
);

return $app['view']->render('Block/test.twig', array(
'test' => $Product,
));


と記述したとします。(多少省略しています。)

ページで商品の対応状況(データベースでいうとdtb_orderのstatus)の数字もしくは文字を表示させたいのですが、
どこにどのような記述をしたら良いのでしょうか?

通常のphpであれば、INNERJOINして取り出せるのですが、ECCUBEの場合がわかりません。
どなたかわかる方、ご教授願います。
tacky
投稿日時: 2016/3/23 10:09
対応状況: −−−
長老
登録日: 2015/10/3
居住地: Tokyo
投稿: 277
Re: DBを連結させ、Twigで表示させたい
Entityのリレーションでしたらこちらが参考になると思います。
http://symfony.com/doc/current/book/doctrine.html#entity-relationships-associations

DoctrineにはSQLに似たDQLというのが書けますので下記参考になると思います。
http://doctrine-orm.readthedocs.org/projects/doctrine-orm/en/latest/reference/dql-doctrine-query-language.html
shhirose
投稿日時: 2016/3/23 12:28
対応状況: −−−
一人前
登録日: 2014/4/24
居住地:
投稿: 94
Re: DBを連結させ、Twigで表示させたい
Block/test.twig に

{{ test.Status }}
or
{{ test.Status.name }}

と記載すると、名称(公開/非公開)が表示されます。


{{ test.Status.id }}

と記載すると、ID (1/2)が表示されます。

EC-CUBE3 では Doctrine というフレームワークを使用しており、
src/Eccube/Resource/doctrine/Eccube.Entity.Product.dcm.yml
というファイルでリレーションの情報が設定されています。
この状態で、リレーション先の情報を twig 等で使用しようとすると、内部的に SQL が発行され、リレーション先のデータを取得することができます。
boss12
投稿日時: 2016/3/23 12:41
対応状況: −−−
常連
登録日: 2016/2/17
居住地:
投稿: 53
Re: DBを連結させ、Twigで表示させたい
tacky様。ありがとうございます。

shhirose様。

少し説明不足でした。
dtb_productのstatus(表示・非表示)ではなく、dtb_orderのstatus(注文状況)をdtb_productと一緒にとりたく、
dtb_productとdtb_order_detailをproduct_idで連結させ、さらにそのdtb_order_detailとdtb_orderをorder_idで連結させればいけるんじゃないかと思っております。

略すると、dtb_productと、それに対応するdtb_orderのstatusをとりたいです。


doctrineの英語ページやsymfony2のページを見ましたが、あまり理解できませんでした。
shhirose
投稿日時: 2016/3/23 14:21
対応状況: −−−
一人前
登録日: 2014/4/24
居住地:
投稿: 94
Re: DBを連結させ、Twigで表示させたい
引用:

dtb_productとdtb_order_detailをproduct_idで連結させ、さらにそのdtb_order_detailとdtb_orderをorder_idで連結させればいけるんじゃないかと思っております。

略すると、dtb_productと、それに対応するdtb_orderのstatusをとりたいです。

これは、ある商品規格に紐づく受注の一覧を取得し、その対応状況を表示したいということでしょうか。



// $id は商品規格ID
$ProductClass = $app['eccube.repository.product_class']->find($id);

$result = $app['orm.em']
    ->createQueryBuilder()
    ->select('o')
    ->from('\Eccube\Entity\Order', 'o')
    ->innerJoin('\Eccube\Entity\OrderDetail', 'od')
    ->where('od.ProductClass = :ProductClass')
    ->setParameter('ProductClass', $ProductClass)
    ->getQuery()
    ->getResult();


これで、$id の規格IDを持つ受注(Order)の一覧が取得できると思います。
※もし規格ではなく、商品で行いたい場合は、od.Product にして、渡すパラメータも ProductClass ではなく、Product にしてあげれば良いかと思います。

※実際に試してはいないので、上手く動かない可能性がありますので、動かない場合は適宜修正してください。
boss12
投稿日時: 2016/3/24 13:30
対応状況: −−−
常連
登録日: 2016/2/17
居住地:
投稿: 53
Re: DBを連結させ、Twigで表示させたい
$em = $app['orm.em'];//パターン3ver1

$query = $em->createQuery('SELECT p,od,o FROM ECCUBE\Entity\Product p, Eccube\Entity\OrderDetail od, Eccube\Entity\Order o WHERE od.Order = o.id AND p.id = od.Product AND p.Creator = 3');

$Product = $query->getResult();

少し変わりましたが、これである程度うまくいったのですが、すべての列?が取得されてしまいます。

なので、
$em = $app['orm.em'];//パターン3ver2

$query = $em->createQuery('SELECT p,od,o FROM ECCUBE\Entity\Product p LEFT JOIN Eccube\Entity\OrderDetail od ON p.id = od.Product LEFT JOIN Eccube\Entity\Order o ON od.Order = o.id WHERE p.Creator = 3');

$sellProduct = $query->getResult();

このように変えました。
しかし、これでは何も取得できませんでした。

上の構文はどこが間違っているでしょうか?

よろしくお願いいたします。
boss12
投稿日時: 2016/3/25 14:46
対応状況: 解決済
常連
登録日: 2016/2/17
居住地:
投稿: 53
Re: DBを連結させ、Twigで表示させたい
createQueryBuilderを使用し、一応解決しました。
表示がうまくいかないので、実際取得できているかわからないですが、、、。

少し進んできて、初期の内容と少し異なるので、別途スレッドを立てました。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は88,808名です
総投稿数は109,972件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2313
5
umebius
2085
6
yuh
1819
7
h_tanaka
1644
8
red
1570
9
mcontact
1289
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.