2017-02-07 12 views
0

私のコードでは、このようなセクションがあります。LaravelのCarbon :: now()toDateTimeString()を変換する際の問題

->whereDate('published_at', '<=', (Carbon::now())->toDateTimeString()) 

このクエリは、私の開発マシン(ホームステッド)でうまく働いたので、devサーバー(aws)にプッシュしました。

しかし、私は問題を言っています。

構文エラー、予期しない ' - >'(T_OBJECT_OPERATOR)

は、しかし、私はこの問題に取り組み、問題を発見しました。唯一の違いは、今、私は周囲の括弧なし Carbon::now()->toDateTimeString())を使用し、代わりに (Carbon::now())->toDateTimeString())を使用するのである

->whereDate('published_at', '<=', Carbon::now()->toDateTimeString()) 

ように私は、クエリを変更するようでした。両方の環境で私のコードは動作します。私はこの問題を発生を考えることができ、AWS

PHP 5.6.29 (cli) (built: Jan 18 2017 19:08:44) 

php -v

HomseteadとAWSでのPHPのバージョン、次のように、ホームステッド

PHP 7.1.0-2+deb.sury.org~xenial+1 (cli) (NTS) 

php -v

出力が出力されPHPのバージョンの違いのために。

しかし、周囲の角括弧を削除するとコードがうまく動作するようになりました。これについてあなたのご意見をお待ちしています。ありがとう!

+1

これはPHPのバージョンが異なるために発生します。 – KuKeC

答えて

2

(Carbon::now())->toDateTimeString()は決して行うべきではありません。私が括弧を使用する唯一の時間は、私がクラスを新しくしていた場合です。

Carbon::now()->toDateTimeString()が正しい方法です。

つまり、Laravelsクエリビルダーでは、toDateTimeString()を追加する必要はありません。

あなただけのことができるようになります。

->whereDate('published_at', '<=', Carbon::now()) 

は、この情報がお役に立てば幸い!

+0

入力いただきありがとうございます。この問題を投稿する前に、実際にこの変更を加えてクエリを修正しました。コードは農家で働いていたので、私の懸念事項は大括弧である。私はそれをawsサーバーにプッシュしたときだけ壊した。 – Gayan

+0

@Gayanはこのような状況では何のメリットもないので、角かっこは使用しないでください。私が私の例で言ったように、クラスベースの状況では、 '(新しいSomeClass) - > someMethod()'のようなものにしか使用しません。 –

関連する問題