Table des matières
Laravel 5框架学习之日期,Mutator 和 Scope,laravelmutator
Write a New Article
Maison développement back-end tutoriel php Laravel 5框架学习之日期,Mutator 和 Scope,laravelmutator_PHP教程

Laravel 5框架学习之日期,Mutator 和 Scope,laravelmutator_PHP教程

Jul 13, 2016 am 09:57 AM
日期

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

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

首先修改控制器:

  public function store() {
    Article::create(Request::all());
    return redirect('articles');
  }
Copier après la connexion

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

@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

Copier après la connexion

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

}

Copier après la connexion

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

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

Copier après la connexion

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

  //设置scope,遵守命名规则
  public function scopePublished($query) {
    $query->where('published_at', '<=', Carbon::now());
  }
Copier après la connexion

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

Copier après la connexion

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

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

  public function scopeUnpublished($query) {
    $query->where('published_at', '>', Carbon::now());
  }
Copier après la connexion

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

Copier après la connexion

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'];
Copier après la connexion

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

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

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/980210.htmlTechArticleLaravel 5框架学习之日期,Mutator 和 Scope,laravelmutator 在我们前面的解决方案中,直接给 published_at 赋值为当前日期实际上是一个临时解决方案...
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment rechercher un Weibo précédent par date sur Weibo_Comment rechercher un Weibo précédent par date sur Weibo Comment rechercher un Weibo précédent par date sur Weibo_Comment rechercher un Weibo précédent par date sur Weibo Mar 30, 2024 pm 07:26 PM

1. Ouvrez d'abord le navigateur Web mobile, recherchez la version Web de Weibo et cliquez sur le bouton avatar dans le coin supérieur gauche après avoir entré. 2. Cliquez ensuite sur Paramètres dans le coin supérieur droit. 3. Cliquez sur l'option de changement de version dans les paramètres. 4. Sélectionnez ensuite l'option de version couleur dans le commutateur de version. 5. Cliquez sur Rechercher pour accéder à la page de recherche. 6. Après avoir saisi les mots-clés, cliquez sur Rechercher des personnes. 7. Lorsque l'interface de fin de recherche apparaît, cliquez sur Filtrer. 8. Enfin, entrez la date spécifique dans la colonne heure de sortie et cliquez sur Filtrer.

Comment supprimer la date qui apparaît automatiquement lors de l'impression à partir de documents PPT Comment supprimer la date qui apparaît automatiquement lors de l'impression à partir de documents PPT Mar 26, 2024 pm 08:16 PM

1. Laissez-moi d'abord parler de la méthode que j'ai utilisée au début, peut-être que tout le monde l'utilise aussi. Tout d’abord, ouvrez [Affichage]——]Modèle de remarques[. 2. Un endroit où vous pouvez réellement voir la date après l'avoir ouverte. 3. Sélectionnez-le d'abord et supprimez-le. 4. Après la suppression, cliquez sur [Fermer la vue principale]. 5. Ouvrez à nouveau l'aperçu avant impression et constatez que la date est toujours là. 6. En fait, cette date n’a pas été supprimée ici. Cela devrait être dans le [Document principal]. Regardez l'image ci-dessous. 7. Supprimez la date après l'avoir trouvée. 8. Désormais, lorsque vous ouvrez l'aperçu et y jetez un œil, la date n'est plus là. Remarque : En fait, cette méthode est également très facile à retenir, car les documents imprimés sont des documents, vous devez donc rechercher le [Handout Master].

Comment afficher la date et les secondes dans la barre supérieure d'Ubuntu 17.10 ? Comment afficher la date et les secondes dans la barre supérieure d'Ubuntu 17.10 ? Jan 08, 2024 am 10:41 AM

Par défaut, la barre supérieure d'Ubuntu 17.10 n'a que l'heure actuelle et aucune date. Que dois-je faire si je souhaite afficher la date ? Jetons un coup d'œil au didacticiel détaillé ci-dessous. 1. Ouvrez le terminal dans le lanceur ou appuyez sur [Ctrl+Alt+T] 2. Entrez dans le terminal : sudoaptinstallgnome-tweak-tool 3. Une fois l'installation terminée, ouvrez l'outil de réglage 4. Cliquez sur TopBar 5. La date est la date et les secondes sont le nombre de secondes 6. Après l'avoir configuré, la date et les secondes seront affichées sur l'heure dans la barre supérieure.

Comment utiliser les modules d'heure et de date en Python Comment utiliser les modules d'heure et de date en Python Oct 16, 2023 am 08:11 AM

Comment utiliser les modules d'heure et de date en Python Introduction : En programmation, gérer l'heure et les dates est des tâches très courantes. Python fournit de puissants modules d'heure et de date, rendant les opérations d'heure et de date plus faciles et plus pratiques. Cet article présentera les modules d'heure et de date en Python et fournira des exemples de code spécifiques pour aider les lecteurs à mieux les comprendre et les appliquer. 1. Présentation du module heure et date Le module heure et date intégré de Python est le module datetime Nous devons d'abord présenter ce module.

Comment changer la date en signe dièse dans Excel Comment changer la date en signe dièse dans Excel Mar 20, 2024 am 11:46 AM

Le logiciel Excel possède des fonctions de traitement de données très puissantes. Nous utilisons souvent un logiciel Excel pour traiter diverses données. Parfois, lorsque nous saisissons une date dans une cellule Excel, la date dans Excel se transforme en signe dièse. Jetons un coup d'œil à la solution ci-dessous. 1. Tout d'abord, nous plaçons la souris sur la ligne de largeur de colonne entre les colonnes AB, double-cliquons et ajustons la largeur de colonne, comme indiqué dans la figure ci-dessous. 2. Une fois la colonne élargie, nous constatons que des nombres sont affichés dans les cellules au lieu de dates. Nous devons ensuite vérifier le format des cellules, comme le montre la figure ci-dessous. 3. Cliquez sur l'option « Numéro » dans l'onglet « Accueil », puis cliquez sur « Autre format de nombre » dans le menu déroulant, comme indiqué dans la figure ci-dessous.

Hyper complet ! Six façons d'obtenir le 'jour de la semaine' pour une certaine date en Python ! Hyper complet ! Six façons d'obtenir le 'jour de la semaine' pour une certaine date en Python ! Apr 19, 2023 am 09:28 AM

Lors de l'analyse des données en Python, il est également nécessaire de regrouper et de résumer par date, par exemple, pour trouver le modèle périodique du volume des ventes. Ensuite, avant d'utiliser Python pour les statistiques de données, vous devez ajouter une étape supplémentaire : obtenir le jour de la semaine à partir de la date spécifiée. Par exemple, le 22 février 2022 est également le 22e mardi du premier mois lunaire, ce qui signifie que de nombreuses personnes s'inscrivent au mariage ce jour-là. Cet article prend le 22/02/2022 comme exemple pour démontrer 6 façons d'obtenir le « jour de la semaine » pour une date spécifiée en Python ! Le module datetime weekday() est une bibliothèque intégrée à Python qui ne nécessite pas d'installation de pip. En plus d'afficher la date et l'heure, il peut également effectuer des calculs et un formatage de date et d'heure.

Filtrage des données PHP : gestion de la saisie de la date et de l'heure Filtrage des données PHP : gestion de la saisie de la date et de l'heure Jul 28, 2023 pm 07:41 PM

Filtrage des données PHP : traitement des données de date et d'heure Présentation : lors du développement d'applications Web, il est souvent nécessaire de traiter les données de date et d'heure saisies par l'utilisateur. Étant donné que les entrées des utilisateurs peuvent contenir divers formats et erreurs, un filtrage et une validation efficaces des données sont nécessaires pour garantir l'exactitude et la sécurité des données. Cet article explique comment utiliser PHP pour gérer la saisie de la date et de l'heure et fournit des exemples de code correspondants. Principes de filtrage et de validation : Avant de traiter les entrées de date et d'heure, vous devez d'abord déterminer les principes de filtrage et de validation correspondants. En voici quelques-uns courants

Comment générer k dates aléatoires entre deux dates en utilisant Python ? Comment générer k dates aléatoires entre deux dates en utilisant Python ? Sep 09, 2023 pm 08:17 PM

La génération de données aléatoires est très importante dans le domaine de la science des données. Lors de la création de prévisions de réseaux neuronaux, de données boursières, etc., la date est généralement utilisée comme l'un des paramètres. Nous devrons peut-être générer des nombres aléatoires entre deux dates à des fins d'analyse statistique. Cet article montrera comment générer k dates aléatoires entre deux dates données à l'aide des modules random et datetime. Datetime est la bibliothèque intégrée de Python pour la gestion du temps. D'un autre côté, le module aléatoire aide à générer des nombres aléatoires. On peut donc combiner les modules random et datetime pour générer une date aléatoire entre deux dates. La syntaxe random.randint (start, end, k) random fait ici référence à la bibliothèque aléatoire Python. La méthode Randint utilise trois éléments importants

See all articles