ホームページ >バックエンド開発 >PHPチュートリアル >Laravel 5 フレームワークの学習日、ミューテーターとスコープ、laravelmutator_PHP チュートリアル

Laravel 5 フレームワークの学習日、ミューテーターとスコープ、laravelmutator_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 09:57:48824ブラウズ

Laravel 5 フレームワークの学習日、ミューテーターとスコープ、laravelmutator

以前のソリューションでは、published_at の値を現在の日付に直接割り当てるのは、実際には一時的なソリューションであり、リリース日を設定する必要があります。 2日後に投稿されましたので、この質問を修正しましょう。

まずコントローラーを変更します:

リーリー

次にビューを変更し、リリース日フィールドを追加します

リーリー

それでは、新しい記事を追加して日付を将来の日に設定しましょう。ただし、記事は先頭に直接表示されるため、これは必要なことではありません。当日にそれを見せなければなりません。もちろん、0時ではなく朝8時に表示するなど、より具体的にする必要があります。ミューテーター (つまり、他の言語のプロパティ セッター) を追加してモデルを変更できます

リーリー

新しいレコードを追加し、データベースを確認します。時刻は正しく設定されていますが、ホームページには今後公開される記事が表示されているため、変更します。

リーリー

上記の解決策は機能しますが、クエリステートメントが長すぎます。 Laravel が提供するスコープを使用すると、作業を簡素化できます。いわゆるスコープは、クエリ プロセスで使用される中間クエリ結果として理解できます。たとえば、公開されたスコープを定義すると、現在公開されているすべての記事が返され、モデルを変更できるようになります。

リーリー

スコープを使用するようにコントローラーを変更します

リーリー

結果は同じですが、複雑なクエリではスコープを使用してタスクを分割したり、クエリを再利用したりできます。

まだ公開されていないすべての記事をクエリする新しいクエリを追加しましょう。モデルにスコープを追加します

リーリー

Unpulished を使用するようにコントローラーを変更します

リーリー

もう 1 つ! show メソッドで dd($article->published_at) を使用すると、結果は dd($article->created_at); とは異なります。後者は、CreateArticleTable の $table->timestamp() を通じて自動的に生成されます。自動生成されたフィールドは Carbon タイプとして表示されますが、私たちのフィールドは String です。 Crabon タイプを使用すると、多くの利点があります。たとえば、 dd($article->created_at->diffForHumans()); という 1 時間前の結果を出力できますが、Published_at では出力できません。変更するにはどうすればよいですか?モデルを変更し、laravelにpublished_atが日付であることを伝えます。

リーリー

dd($article->published_at->diffForHumans()); を再度使用すると、結果は 3 日後と表示されます。ビンゴ!

以上がこの記事の全内容です。皆さんがLaravel5フレームワークを学ぶのに役立つことを願っています。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/980210.html技術記事 Laravel 5 フレームワークの学習日、ミューテーターとスコープ、laravelmutator 以前のソリューションでは、published_at の値を現在の日付に直接割り当てるのは、実際には一時的なソリューションでした...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。