ホームページ >バックエンド開発 >PHPチュートリアル >Laravel 5 フレームワークの学習日、ミューテーターとスコープ、laravelmutator_PHP チュートリアル
以前のソリューションでは、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フレームワークを学ぶのに役立つことを願っています。