ホームページ >バックエンド開発 >PHPチュートリアル >Laravel 5 の基本 (10) - 日付、ミューテーター、スコープ
以前の解決策では、published_at に現在の日付を直接割り当てるのは、実際には一時的な解決策であり、2 日後まで公開されない可能性があります。
まずコントローラーを変更します:
リーリー次にビューを変更し、リリース日フィールドを追加します
リーリーそれでは、新しい記事を追加して日付を将来の日に設定しましょう。ただし、記事は先頭に直接表示されるため、これは必要なことではありません。当日にそれを見せなければなりません。もちろん、0時ではなく朝8時に表示するなど、より具体的にする必要があります。ミューテーター (つまり、他の言語のプロパティ セッター) を追加してモデルを変更できます
リーリー新しいレコードを追加し、データベースを確認します。時刻は正しく設定されていますが、ホームページには今後公開される記事が表示されているため、変更します。
リーリー上記の解決策は機能しますが、クエリステートメントが長すぎます。 Laravel が提供するスコープを使用すると、作業を簡素化できます。いわゆるスコープは、クエリ プロセスで使用される中間クエリ結果として理解できます。たとえば、公開されたスコープを定義すると、現在公開されているすべての記事が返され、モデルを変更できるようになります。
リーリースコープを使用するようにコントローラーを変更します
リーリー結果は同じですが、複雑なクエリではスコープを使用してタスクを分割したり、クエリを再利用したりできます。
まだ公開されていないすべての記事をクエリする新しいクエリを追加しましょう。モデルにスコープを追加します
リーリーUnpulished を使用するようにコントローラーを変更します
リーリーもう 1 つ! show
方法中使用 dd($article->published_at)
查看的结果,与 dd($article->created_at);
结果不一样,前者我们使我们自己的字段,后者是在 CreateArticleTable
中通过 $table->timestamp()
自动生成的。自动生成的字段显示出来是 Carbon
类型,而我们的是字符串。使用 Crabon类型有很多的好处,例如你可以输出 dd($article->created_at->diffForHumans());
,这种 1 hour ago
结果,但我们的published_at
不可以。怎么修改?修改模型,告诉laravel,published_at
だったら、デートするでしょう。
またdd($article->published_at->diffForHumans());
,结果显示为 3 days from now
を使ってビンゴ!
以上、Laravel 5の基礎(10) - Date、Mutator、Scopeを内容も含めて紹介しましたが、PHPチュートリアルに興味のある友人の参考になれば幸いです。