バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > フロント機能 > レポジトリを呼び出し取得した配列データへのアクセスでエラー発生

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
Mayn
投稿日時: 2022/4/5 0:56
対応状況: −−−
半人前
登録日: 2022/2/7
居住地:
投稿: 14
レポジトリを呼び出し取得した配列データへのアクセスでエラー発生
▼テンプレート
[EC-CUBE] 4.1.0
[レンタルサーバ] X-server
[OS] Window10
[PHP] 7.4.10
[データベース] MySQL 5.7.32
[WEBサーバ] Apache
[ブラウザ] chrom
[導入プラグインの有無] あり
[カスタマイズの有無] なし
[現象] レポジトリを呼び出し取得した配列データへのアクセスでエラー発生
twig上でレポジトリを呼び出し商品データの取得を行い、dump関数を用いてデータの中身をチェックしました。

商品名は {{ p.name }} にて、
メーカー名は {{ p.Maker.name }} で表示することはできましたが、
価格を表示することができず、配列の場合のデータへのアクセス方法について教えて頂きたいです。
基本的なことで恐れ入りますが、ご教示頂きたく宜しくお願い致します。

◾︎ price02IncTaxs の数値を取得したい
◾︎ 記載したコード:{{ p.price02[0] }}
◾︎ エラー内容:Neither the property "price02IncTaxs" nor one of the methods "price02IncTaxs()", "getprice02IncTaxs()"/"isprice02IncTaxs()"/"hasprice02IncTaxs()" or "__call()" exist and have public access in class "Eccube\Entity\Product".

・レポジトリ呼び出し
{% set Category = repository("Eccube\\Entity\\Category").find(1) %}
{%
set products = repository("Eccube\\Entity\\Product")
.getQueryBuilderBySearchData({'category_id':Category})
.setMaxResults(8)
.getQuery()
.getResult()
%}
{{ dump(products) }}

・dumpにてデータの中身をチェック(一部省略)
array:5 [▼
0 => Eccube\Entity\Product {#4304 ▼
-_calc: true
-stockFinds: array:1 [▼
0 => true
]
-stocks: array:1 [▼
0 => null
]
-price01IncTaxs: []
-price02IncTaxs: array:1 [▼
0 => 55000.0 ※この価格を取得・表示させたいです。
]
-id: 9
-name: "ROUND NECK"
-note: null
-description_list: null
-Maker: Proxies\__CG__\Plugin\Maker4\Entity\Maker {#5590 ▼
+__isInitialized__: true
-id: 5
-name: "VItter"
-sort_no: 5
-create_date: DateTime @1648967288 {#5662 ▶}
-update_date: DateTime @1648967288 {#5663 ▶}
…2
468
投稿日時: 2022/4/5 1:37
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 3217
Re: レポジトリを呼び出し取得した配列データへのアクセスでエラー発生
Productクラスのprice02やprice02IncTaxsのプロパティは
privateで宣言されているので直接アクセスする事は出来ないと思います。
(/src/Eccube/Entity/Product.phpの記述を確認してみてください)

該当のプロパティにアクセスできそうなメソッドは
function getPrice02Min()
function getPrice02Max()
function getPrice02IncTaxMin()
function getPrice02IncTaxMax()
と思いますが、いずれも配列の1つ目にアクセスできるようなものではないようです。

一度、getProductClasses()でProductに紐づくProductClassの配列を取得して
1つ目のProductClassのgetPrice02()を実行すればよいのではないでしょうか?

正常に表示できるかどうかは試していないので分かりませんが
{{ p.ProductClasses[0].price02 }}
のような書き方で表示できるのではないかと思います。


----------------
株式会社シロハチ
■ECCUBE2系、3系構築カスタマイズご相談ください。
EC-CUBE3マニュアル
blog

Mayn
投稿日時: 2022/4/6 10:52
対応状況: −−−
半人前
登録日: 2022/2/7
居住地:
投稿: 14
Re: レポジトリを呼び出し取得した配列データへのアクセスでエラー発生
ご教示ありがとうございます。

仰る通り、/src/Eccube/Entity/Product.phpの記述では$price02IncTaxsプロパティはprivateで宣言されておりました。

アドバイス頂いたgetProductClasses()での配列の取得ですが、これは既存のtwigに追加で記載するということではなく、別に処理をするという意味合いでしょうか。以下の処理に書き込みとエラーになってしまい、確認ができませんでした。

{% set Category = repository("Eccube\\Entity\\Category").find(1) %}
{%
set products = repository("Eccube\\Entity\\Product")
.getQueryBuilderBySearchData({'category_id':Category})
.setMaxResults(8)
.getQuery()
.getResult()
%}


理解不足で申し訳ございませんが、よろしくお願いいたします。
468
投稿日時: 2022/4/7 9:20
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 3217
Re: レポジトリを呼び出し取得した配列データへのアクセスでエラー発生
どのようなエラーが発生したのでしょうか?
私はDBからデータを取り出すような処理はコントローラークラスに記述するようにしているので
投稿いただいた記述のどこに問題がある(twig上でrepositoryを使った書き方)のかは判断できません。
お役に立てず申し訳ないです。


----------------
株式会社シロハチ
■ECCUBE2系、3系構築カスタマイズご相談ください。
EC-CUBE3マニュアル
blog

Mayn
投稿日時: 2022/4/11 12:25
対応状況: −−−
半人前
登録日: 2022/2/7
居住地:
投稿: 14
Re: レポジトリを呼び出し取得した配列データへのアクセスでエラー発生
データベースから取得する方法もあるとのこと、ご教示有難うございました。

エラーの件、解決致しました。ご報告遅くなりましたがこちらで共有させて頂きます。

以下記述にてprice02IncTaxsのデータへアクセスすることができましたのでこちらで共有させて頂きます。

{% if products %}
{% for p in products %}

{{ p.getPrice02IncTaxMin|price }}


{% endfor %}
{% endif %}


スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

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

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2313
5
umebius
2085
6
yuh
1819
7
h_tanaka
1646
8
red
1570
9
mcontact
1292
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.