バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > 管理機能 > データベースにデータ取込時エラー発生

管理機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
qwesa0
投稿日時: 2021/4/30 15:13
対応状況: −−−
半人前
登録日: 2021/3/24
居住地:
投稿: 12
データベースにデータ取込時エラー発生
▼テンプレート
[EC-CUBE]3.0.16
[レンタルサーバ]AWS
[OS]centos7
[PHP]7.1.8
[ブラウザ]chrome
[データベース]postresql

$lastPointProductVipDateStartに'2021/04/30 15:10:00'このデータが入っています。
データベースに更新するときにエラーが発生しています。

データベースのカラムのデータ型:timestamp(0) without time zone

DateTimeType.phpはeccubeのものです。

public function AA()は取得したデータをdbに更新しているだけです。
データベースのカラムがtimestamp(0) without time zoneになっており、
$lastPointProductVipDateStartデータ型があって無いので、エラーが起きていると認識しています。

ご教授いただけますと幸いです。
宜しくお願いいたします。

引用:
エラーメッセージ:FatalThrowableError in DateTimeType.php line 53:
Call to a member function format() on string


引用:
ソース:
public function AA($pointRate, $product, $customerKbn = null, $lastPointProductVipDateStart)
{
try {
$em = $this->getEntityManager();

$pointRateEntity = new PointProductRate();
$pointRateEntity->setPlgPointProductRate($pointRate);
$pointRateEntity->setProduct($product);
$pointRateEntity->setProductId($product->getId());

$date = $lastPointProductVipDateStart;

$now = date($date);

$pointRateEntity->setPointDateStart($now);
echo $pointRateEntity['point_date_start'];

$em->persist($pointRateEntity);

if(!is_null($customerKbn)){
$pointCategory = new PointCategory();
$pointCategory->setPlgPointProductRateId($pointRateEntity->getPlgPointProductRateId());
$pointCategory->setCustomerKbn($customerKbn);
$pointCategory->setDelFlg(Constant::DISABLED);
$em->persist($pointCategory);
}

$em->persist($product);

// DB更新
$em->flush();
} catch (NoResultException $e) {
throw new NoResultException();
}
}
umebius
投稿日時: 2021/5/1 10:55
対応状況: −−−
登録日: 2016/7/22
居住地:
投稿: 2085
Re: データベースにデータ取込時エラー発生

使われているdate関数は日付文字列を返す関数ですよね。
https://www.php.net/manual/ja/function.date.php

一方でDateTimeType.phpを使って画面に表示するのであれば、DateTimeクラスのオブジェクトをデータソースとしてセットすることが要求されます。

DateTimeTypeに文字列を渡すと記載されているようなエラーになります。


----------------
EC-CUBEカスタマイズ・高速化・脆弱性対策・SEO ご相談ください。

2系・3系から4系へのバージョンアップ実績豊富

qwesa0
投稿日時: 2021/5/5 12:45
対応状況: −−−
半人前
登録日: 2021/3/24
居住地:
投稿: 12
Re: データベースにデータ取込時エラー発生
コメントありがとうございます!!

既存の$dateを無視し、新しくデータを入れてみました。
$date = $lastPointProductVipDateStart;

            $now = date($date);

            $date2 = \DateTime::createFromFormat('Y/m/d H:i:s', '2021/01/01 11:11:11');

            $pointRateEntity->setPointDateStart($date2);

            $em->persist($pointRateEntity);

上記の内容で2021/01/01 11:11:11がデータベースに無事保存されましたが、

下のようにするとエラーが発生します。
FatalThrowableError in DateTimeType.php line 53:
Call to a member function format() on boolean


$date = $lastPointProductVipDateStart;

            $now = date($date);

            $date2 = \DateTime::createFromFormat('Y/m/d H:i:s', $now);

            $pointRateEntity->setPointDateStart($date2);

            $em->persist($pointRateEntity);

ご教授いただけますと幸いです。
宜しくお願いいたします。
qwesa0
投稿日時: 2021/5/5 12:54
対応状況: −−−
半人前
登録日: 2021/3/24
居住地:
投稿: 12
Re: データベースにデータ取込時エラー発生
おかけ様で解決できました。
上記であっていたんですが、根本的な部分が間違っていました。

$nowが2021-01-01 11:11:11の形になっていたのが問題でした。
$date = $lastPointProductVipDateStart;

            $now = date($date);
            $str = str_replace("-", "/", $now);

            $date2 = \DateTime::createFromFormat('Y/m/d H:i:s', $str);

            $pointRateEntity->setPointDateStart($date2);

            $em->persist($pointRateEntity);

これで解決できました。ありがとうございます!!
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

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

投稿数ランキング

1
seasoft
7365
2
468
3217
3
AMUAMU
2712
4
nanasess
2303
5
umebius
2085
6
yuh
1818
7
h_tanaka
1610
8
red
1568
9
mcontact
1240
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
796
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.