Inhaltsverzeichnis
Laravel 5框架学习之日期,Mutator 和 Scope,laravelmutator
Write a New Article
Heim php教程 php手册 Laravel 5框架学习之日期,Mutator 和 Scope,laravelmutator

Laravel 5框架学习之日期,Mutator 和 Scope,laravelmutator

Jun 13, 2016 am 09:07 AM
日期

Laravel 5框架学习之日期,Mutator 和 Scope,laravelmutator

在我们前面的解决方案中,直接给 published_at 赋值为当前日期实际上是一个临时解决方案,我们需要设定发布日期,可能是未来2天后才发布,让我们修改这个问题。

首先修改控制器:

  public function store() {
    Article::create(Request::all());
    return redirect('articles');
  }
Nach dem Login kopieren

然后修改视图,添加发布日期字段

@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

Nach dem Login kopieren

ok,让我们添加一个新的文章,并且把日期设置为未来的某一天,但是文章直接显示在最开始了,这不是我们需要的。我们需要到了那天才显示出来。当然,我们需要更具体一点,比如在早上 8:00 显示,而不是0点显示。我们可以添加一个mutator(也就是其他语言的属性设置器),修改我们的model

<&#63;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);
  }

}

Nach dem Login kopieren

添加一个新的纪录,查看数据库,我们已经将时间设置正确了,但是我们的首页仍然显示未来的才发布的文章,我们修改它。

 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'));
  }

Nach dem Login kopieren

上面的解决方法可以工作,但是查询语句太长了。我们可以使用 Laravel 提供的 scope ,来简化我们的工作。所谓scope可以理解为是查询过程中使用的中间查询结果,比如我们定义一个published scope,他可以返回所有当前已经发布的文章,让我们修改模型。

  //设置scope,遵守命名规则
  public function scopePublished($query) {
    $query->where('published_at', '<=', Carbon::now());
  }
Nach dem Login kopieren

修改控制器使用 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'));
  }

Nach dem Login kopieren

结果相同,但在复杂的查询中我们可以使用scope来分解我们的任务,或者复用查询。

我们来增加一个新的查询,查询所有还没有发布的文章。在模型中添加scope

  public function scopeUnpublished($query) {
    $query->where('published_at', '>', Carbon::now());
  }
Nach dem Login kopieren

修改控制器使用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'));
  }

Nach dem Login kopieren

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'];
Nach dem Login kopieren

再次使用 dd($article->published_at->diffForHumans()); ,结果显示为 3 days from now,Bingo!

以上所述就是本文的全部内容了,希望能够给大家学习Laravel5框架有所帮助。

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So durchsuchen Sie frühere Weibos nach Datum auf Weibo_So durchsuchen Sie frühere Weibos nach Datum auf Weibo So durchsuchen Sie frühere Weibos nach Datum auf Weibo_So durchsuchen Sie frühere Weibos nach Datum auf Weibo Mar 30, 2024 pm 07:26 PM

1. Öffnen Sie zunächst den mobilen Webbrowser, suchen Sie nach der Weibo-Webversion und klicken Sie nach der Eingabe auf die Avatar-Schaltfläche in der oberen linken Ecke. 2. Klicken Sie dann oben rechts auf Einstellungen. 3. Klicken Sie in den Einstellungen auf die Option zum Versionswechsel. 4. Wählen Sie dann im Versionsschalter die Option Farbversion aus. 5. Klicken Sie auf Suchen, um die Suchseite aufzurufen. 6. Klicken Sie nach der Eingabe der Schlüsselwörter auf „Personen suchen“. 7. Wenn die Suchabschlussoberfläche angezeigt wird, klicken Sie auf Filter. 8. Geben Sie abschließend das konkrete Datum in die Spalte „Veröffentlichungszeit“ ein und klicken Sie auf „Filter“.

So entfernen Sie das Datum, das beim Drucken von PPT-Handouts automatisch angezeigt wird So entfernen Sie das Datum, das beim Drucken von PPT-Handouts automatisch angezeigt wird Mar 26, 2024 pm 08:16 PM

1. Lassen Sie mich zunächst über die Methode sprechen, die ich am Anfang verwendet habe. Vielleicht verwendet sie auch jeder. Öffnen Sie zunächst [Ansicht]——]Bemerkungsvorlage[. 2. Ein Ort, an dem Sie das Datum nach dem Öffnen tatsächlich sehen können. 3. Wählen Sie es zuerst aus und löschen Sie es. 4. Klicken Sie nach dem Löschen auf [Masteransicht schließen]. 5. Öffnen Sie die Druckvorschau erneut und stellen Sie fest, dass das Datum noch vorhanden ist. 6. Tatsächlich wurde dieses Datum hier nicht gelöscht. Es sollte im [Handout Master] enthalten sein. Schauen Sie sich das Bild unten an. 7. Löschen Sie das Datum, nachdem Sie es gefunden haben. 8. Wenn Sie nun die Vorschau öffnen und einen Blick darauf werfen, ist das Datum nicht mehr vorhanden. Hinweis: Tatsächlich ist diese Methode auch sehr leicht zu merken, da es sich bei den gedruckten Handouts um Handouts handelt. Sie sollten daher nach dem [Handout Master] suchen.

Wie generiert man mit Python k zufällige Daten zwischen zwei Daten? Wie generiert man mit Python k zufällige Daten zwischen zwei Daten? Sep 09, 2023 pm 08:17 PM

Die Generierung von Zufallsdaten ist im Bereich der Datenwissenschaft sehr wichtig. Beim Erstellen neuronaler Netzwerkvorhersagen, Börsendaten usw. wird normalerweise das Datum als einer der Parameter verwendet. Für die statistische Analyse müssen wir möglicherweise Zufallszahlen zwischen zwei Daten generieren. In diesem Artikel wird gezeigt, wie man mit den Modulen „random“ und „datetime“ k zufällige Daten zwischen zwei bestimmten Daten generiert. Datetime ist Pythons integrierte Bibliothek für die Zeitverarbeitung. Andererseits hilft das Zufallsmodul bei der Generierung von Zufallszahlen. Wir können also Zufalls- und Datum/Uhrzeit-Module kombinieren, um ein zufälliges Datum zwischen zwei Daten zu generieren. Syntax random.randint (start, end, k) random bezieht sich hier auf die Python-Zufallsbibliothek. Die Randint-Methode verwendet drei wichtige

Super komplett! Sechs Möglichkeiten, den „Wochentag' für ein bestimmtes Datum in Python abzurufen! Super komplett! Sechs Möglichkeiten, den „Wochentag' für ein bestimmtes Datum in Python abzurufen! Apr 19, 2023 am 09:28 AM

Bei der Durchführung einer Datenanalyse in Python ist es außerdem erforderlich, sie nach Datum zu gruppieren und zusammenzufassen, um beispielsweise das periodische Muster des Verkaufsvolumens zu ermitteln. Bevor Sie Python für Datenstatistiken verwenden, müssen Sie dann einen zusätzlichen Schritt hinzufügen: Ermitteln Sie den Wochentag aus dem angegebenen Datum. Beispielsweise ist der 22. Februar 2022 gleichzeitig auch der 22. Dienstag des ersten Mondmonats, sodass sich an diesem Tag besonders viele Menschen zur Ehe anmelden. In diesem Artikel wird der 22.02.2022 als Beispiel verwendet, um 6 Möglichkeiten zu demonstrieren, den „Wochentag“ für ein bestimmtes Datum in Python abzurufen! Das datetime-Modul „weekday()“ ist eine in Python integrierte Bibliothek, die keine Pip-Installation erfordert. Zusätzlich zur Anzeige von Datum und Uhrzeit kann es auch Datums- und Uhrzeitberechnungen und -formatierungen durchführen.

Wie werden Datum und Sekunden in der oberen Leiste von Ubuntu 17.10 angezeigt? Wie werden Datum und Sekunden in der oberen Leiste von Ubuntu 17.10 angezeigt? Jan 08, 2024 am 10:41 AM

Standardmäßig wird in der oberen Leiste von Ubuntu 17.10 nur die aktuelle Uhrzeit und kein Datum angezeigt. Was muss ich tun, wenn ich das Datum anzeigen möchte? Werfen wir einen Blick auf das ausführliche Tutorial unten. 1. Öffnen Sie das Terminal im Launcher oder drücken Sie [Strg+Alt+T] 2. Geben Sie im Terminal Folgendes ein: sudoaptinstallgnome-tweak-tool 3. Öffnen Sie nach Abschluss der Installation das Tweak-Tool 4. Klicken Sie auf die obere Leiste 5. Datum ist Das Datum und die Sekunden sind die Anzahl der Sekunden 6. Nach der Einrichtung werden das Datum und die Sekunden auf der Uhrzeit in der oberen Leiste angezeigt.

So verwenden Sie die Zeit- und Datumsmodule in Python So verwenden Sie die Zeit- und Datumsmodule in Python Oct 16, 2023 am 08:11 AM

So verwenden Sie die Zeit- und Datumsmodule in Python. Einführung: In der Programmierung ist der Umgang mit Zeit und Datum eine sehr häufige Aufgabe. Python bietet leistungsstarke Zeit- und Datumsmodule, die Zeit- und Datumsoperationen einfacher und bequemer machen. In diesem Artikel werden die Zeit- und Datumsmodule in Python vorgestellt und spezifische Codebeispiele bereitgestellt, um den Lesern zu helfen, sie besser zu verstehen und anzuwenden. 1. Einführung in das Zeit- und Datumsmodul Das in Python integrierte Zeit- und Datumsmodul ist das Datum/Uhrzeit-Modul. Wir müssen dieses Modul zuerst vorstellen.

So ändern Sie das Datum in Excel in ein Nummernzeichen So ändern Sie das Datum in Excel in ein Nummernzeichen Mar 20, 2024 am 11:46 AM

Excel-Software verfügt häufig über sehr leistungsstarke Datenverarbeitungsfunktionen. Wenn wir ein Datum in eine Excel-Zelle eingeben, ändert sich das Datum in Excel. Wie können wir die Daten normal anzeigen? Schauen wir uns die Lösung unten an. 1. Zuerst setzen wir die Maus auf die Spaltenbreitenlinie zwischen den Spalten AB, doppelklicken und passen die Spaltenbreite an, wie in der Abbildung unten gezeigt. 2. Nachdem die Spalte erweitert wurde, stellen wir fest, dass in den Zellen Zahlen anstelle von Datumsangaben angezeigt werden. Dies ist definitiv falsch. Dann sollten wir das Format der Zellen überprüfen, wie in der Abbildung unten gezeigt. 3. Klicken Sie auf der Registerkarte „Home“ auf die Option „Nummer“ und dann im Dropdown-Menü auf „Anderes Zahlenformat“, wie in der Abbildung unten dargestellt.

PHP-Datenfilterung: Verarbeitung von Datums- und Uhrzeiteingaben PHP-Datenfilterung: Verarbeitung von Datums- und Uhrzeiteingaben Jul 28, 2023 pm 07:41 PM

PHP-Datenfilterung: Übersicht über die Verarbeitung von Datums- und Uhrzeiteingaben: Bei der Entwicklung von Webanwendungen ist es häufig erforderlich, vom Benutzer eingegebene Datums- und Uhrzeitdaten zu verarbeiten. Da Benutzereingaben verschiedene Formate und Fehler enthalten können, sind eine effektive Datenfilterung und -validierung erforderlich, um die Datengenauigkeit und -sicherheit zu gewährleisten. In diesem Artikel wird erläutert, wie PHP zur Verarbeitung von Datums- und Uhrzeiteingaben verwendet wird, und es werden entsprechende Codebeispiele bereitgestellt. Filter- und Validierungsprinzipien: Bevor Sie Datums- und Zeiteingaben verarbeiten, müssen Sie zunächst die entsprechenden Filter- und Validierungsprinzipien festlegen. Hier sind einige häufige Beispiele

See all articles