バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

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

管理機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
qwesa0
投稿日時: 2021/4/30 15:13
対応状況: −−−
半人前
登録日: 2021/3/24
居住地:
投稿: 11
データベースにデータ取込時エラー発生
▼テンプレート
[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
居住地: 東京日本橋
投稿: 1973
Re: データベースにデータ取込時エラー発生

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

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

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


----------------
EC-CUBE4系 カスタマイズ ECのプロがシステム急ぎの案件承ります。
EC-CUBE開発 リモートで働くエンジニア募集中

qwesa0
投稿日時: 2021/5/5 12:45
対応状況: −−−
半人前
登録日: 2021/3/24
居住地:
投稿: 11
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
居住地:
投稿: 11
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ペイメント

公式ストアEC-CUBE4系デザインテンプレート続々リリース中

統計情報

総メンバー数は71,094名です
総投稿数は101,017件です

投稿数ランキング

1
seasoft
7333
2
468
2957
3
AMUAMU
2712
4
nanasess
2139
5
umebius
1973
6
yuh
1612
7
red
1443
8
h_tanaka
1079
9
tsuji
936
10
fukap
907
11
shutta
835
12
tao_s
793
13 ramrun 789
14 karin 689
15 sumida 641
16
homan
633
17 DELIGHT 572
18
patapata
502
19
flealog
485
20 tonton 437


ネットショップの壺

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

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