ホームページ  >  記事  >  バックエンド開発  >  Laravel 5 の基本 (10) - 日付、ミューテーター、スコープ

Laravel 5 の基本 (10) - 日付、ミューテーター、スコープ

WBOY
WBOYオリジナル
2016-08-08 09:26:45786ブラウズ

以前の解決策では、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チュートリアルに興味のある友人の参考になれば幸いです。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。