Laravel 5框架学习之日期,Mutator 和 Scope,laravelmutator
Laravel 5框架学习之日期,Mutator 和 Scope,laravelmutator
在我们前面的解决方案中,直接给 published_at 赋值为当前日期实际上是一个临时解决方案,我们需要设定发布日期,可能是未来2天后才发布,让我们修改这个问题。
首先修改控制器:
public function store() { Article::create(Request::all()); return redirect('articles'); }
然后修改视图,添加发布日期字段
@extends('layout') @section('content') <h1 id="Write-a-New-Article">Write a New Article</h1> <hr/> {{--使用我们添加的 illuminate\html 开源库--}} {!! Form::open(['url' => 'articles']) !!} <div class="form-group"> {!! Form::label('title', 'Title:') !!} {!! Form::text('title', null, ['class' => 'form-control']) !!} </div> <div class="form-group"> {!! Form::label('body', 'Body:') !!} {!! Form::textarea('body', null, ['class' => 'form-control']) !!} </div> <div class="form-group"> {!! Form::label('published_at', 'Publish On:') !!} {!! Form::input('date', 'published_at', date('Y-m-d'), ['class' => 'form-control']) !!} </div> <div class="form-group"> {!! Form::submit('Add Article', ['class' => 'btn btn-primary form-control']) !!} </div> {!! Form::close() !!} @stop
ok,让我们添加一个新的文章,并且把日期设置为未来的某一天,但是文章直接显示在最开始了,这不是我们需要的。我们需要到了那天才显示出来。当然,我们需要更具体一点,比如在早上 8:00 显示,而不是0点显示。我们可以添加一个mutator(也就是其他语言的属性设置器),修改我们的model
<?php namespace App; use DateTime; use Illuminate\Database\Eloquent\Model; class Article extends Model { protected $fillable = [ 'title', 'body', 'published_at' ]; //属性设置其要遵守格式约定 // set属性Attribute public function setPublishedAtAttribute($date) { $this->attributes['published_at'] = Carbon::createFromFormat('Y-m-d', $date)->hour(8)->minute(0)->second(0); } }
添加一个新的纪录,查看数据库,我们已经将时间设置正确了,但是我们的首页仍然显示未来的才发布的文章,我们修改它。
public function index() { //$articles = Article::latest('published_at')->get(); $articles = Article::latest('published_at')->where('published_at', '<=', Carbon::now())->get(); return view('articles.index', compact('articles')); }
上面的解决方法可以工作,但是查询语句太长了。我们可以使用 Laravel 提供的 scope ,来简化我们的工作。所谓scope可以理解为是查询过程中使用的中间查询结果,比如我们定义一个published scope,他可以返回所有当前已经发布的文章,让我们修改模型。
//设置scope,遵守命名规则 public function scopePublished($query) { $query->where('published_at', '<=', Carbon::now()); }
修改控制器使用 scope
public function index() { //$articles = Article::latest('published_at')->get(); //$articles = Article::latest('published_at')->where('published_at', '<=', Carbon::now())->get(); $articles = Article::latest('published_at')->published()->get(); return view('articles.index', compact('articles')); }
结果相同,但在复杂的查询中我们可以使用scope来分解我们的任务,或者复用查询。
我们来增加一个新的查询,查询所有还没有发布的文章。在模型中添加scope
public function scopeUnpublished($query) { $query->where('published_at', '>', Carbon::now()); }
修改控制器使用unpulished
public function index() { //$articles = Article::latest('published_at')->get(); //$articles = Article::latest('published_at')->where('published_at', '<=', Carbon::now())->get(); //$articles = Article::latest('published_at')->published()->get(); $articles = Article::latest('published_at')->Unpublished()->get(); return view('articles.index', compact('articles')); }
one more thing! 如果我们在 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 是日期即可。
protected $dates = ['published_at'];
再次使用 dd($article->published_at->diffForHumans()); ,结果显示为 3 days from now,Bingo!
以上所述就是本文的全部内容了,希望能够给大家学习Laravel5框架有所帮助。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









1. まずモバイル Web ブラウザを開き、Weibo Web バージョンを検索し、入力後に左上隅にあるアバター ボタンをクリックします。 2. 次に、右上隅の「設定」をクリックします。 3. 設定でバージョン切り替えオプションをクリックします。 4. 次に、バージョン スイッチでカラー バージョン オプションを選択します。 5. 「検索」をクリックして検索ページに入ります。 6. キーワードを入力した後、「Find People」をクリックします。 7. 検索完了インターフェイスが表示されたら、「フィルター」をクリックします。 8. 最後に、リリース時刻列に特定の日付を入力し、[フィルター] をクリックします。

1. まず最初に私が使用した方法について話します。おそらく誰もがそれを使用しているかもしれません。まず、[表示]——]備考テンプレート[を開きます。 2. 開封後、実際に日付が確認できる場所。 3. 最初にそれを選択して削除します。 4. 削除後、[マスタービューを閉じる]をクリックします。 5. もう一度印刷プレビューを開くと、日付がまだ残っていることがわかります。 6. 実際、この日付はここでは削除されていません。 [配布資料マスター]にあるはずです。下の写真を見てください。 7. 日付を見つけたら削除します。 8. プレビューを開いて確認すると、日付が表示されなくなります。注: 実際、この方法も非常に覚えやすいです。印刷された配布資料は配布資料なので、[配布資料マスター] を探す必要があります。

ランダム データの生成は、データ サイエンスの分野において非常に重要です。ニューラル ネットワークの予測や株式市場データなどの構築では、通常、日付がパラメーターの 1 つとして使用されます。統計分析のために 2 つの日付の間で乱数を生成する必要がある場合があります。この記事では、random モジュールと datetime モジュールを使用して、指定された 2 つの日付の間で k 個のランダムな日付を生成する方法を示します。Datetime は、時刻を処理するための Python の組み込みライブラリです。一方、random モジュールは乱数の生成に役立ちます。したがって、random モジュールと datetime モジュールを組み合わせて、2 つの日付の間のランダムな日付を生成できます。構文random.randint (start, end, k) ここでのrandomは、Pythonのランダムライブラリを指します。 randint メソッドでは 3 つの重要なメソッドを使用します。

Ubuntu 17.10のトップバーにはデフォルトでは現在時刻のみが表示され、日付は表示されません。日付を表示したい場合はどうすればよいですか?以下の詳細なチュートリアルを見てみましょう。 1. ランチャーでターミナルを開くか、[Ctrl+Alt+T] を押します。 2. ターミナルに「sudoaptinstallgnome-tweak-tool」と入力します。 3. インストールが完了したら、調整ツールを開きます。 4. TopBar をクリックします。 5. 日付は次のとおりです。日付と秒は秒数です。 6. 設定後、上部バーの時刻に日付と秒が表示されます。

Pythonでデータ分析を行う場合、売上高の周期的なパターンを知るなど、日付ごとにグループ化して集計することも必要です。データ統計に Python を使用する前に、指定された日付から曜日を取得するという追加の手順を追加する必要があります。たとえば、2022年2月22日は旧暦第一月22日の火曜日に当たるため、この日に婚姻届を提出する人が特に多くなります。この記事では、2022-02-22 を例として、Python で指定した日付の「曜日」を取得する 6 つの方法を説明します。 Weekday() datetime モジュールは、pip のインストールを必要としない Python 組み込みライブラリであり、日付と時刻の表示に加えて、日付と時刻の計算と書式設定も実行できます。

Excel ソフトには非常に強力なデータ処理機能が備わっています。私たちはさまざまなデータを処理するために Excel ソフトをよく使用します。Excel のセルに日付を入力すると、Excel の日付がポンド記号に変わってしまうことがあります。データを正常に表示するにはどうすればよいですか?以下の解決策を見てみましょう。 1. まず、下の図に示すように、列 AB の間の列幅の線にマウスを置き、ダブルクリックして列幅を調整します。 2. 列の幅を広げると、セルに日付の代わりに数値が表示されますが、これは間違いです。次の図に示すように、セルの書式を確認する必要があります。 3. 以下の図に示すように、[ホーム] タブの [数値] オプションをクリックし、ドロップダウン メニューの [その他の数値形式] をクリックします。

Python で時刻と日付モジュールを使用する方法 はじめに: プログラミングでは、時刻と日付を扱うことは非常に一般的なタスクです。 Python は強力な時刻と日付のモジュールを提供し、時刻と日付の操作をより簡単かつ便利にします。この記事では、Python の時刻と日付のモジュールを紹介し、読者がそれらをよりよく理解して適用できるように、具体的なコード例を示します。 1. 日時モジュールの導入 Python に組み込まれている日時モジュールは datetime モジュールですので、最初にこのモジュールを導入する必要があります。

PHP データ フィルタリング: 日付と時刻の入力の処理 概要: Web アプリケーションを開発する場合、多くの場合、ユーザーが入力した日付と時刻のデータを処理する必要があります。ユーザー入力にはさまざまな形式やエラーが含まれる可能性があるため、データの正確性とセキュリティを確保するには、効果的なデータのフィルタリングと検証が必要です。この記事では、PHP を使用して日付と時刻の入力を処理する方法を説明し、対応するコード例を示します。フィルタリングと検証の原則: 日付と時刻の入力を処理する前に、まず対応するフィルタリングと検証の原則を決定する必要があります。一般的なものをいくつか示します
