目次
1. タイムスタンプを無効にする
2. タイムスタンプのデフォルトのリストを変更します
3. タイムスタンプの日付/時刻形式を変更します
# の変更をトリガーしないでください。 ##Eloquent レコードが変更されるたびに、現在のタイムスタンプが updated_at
ホームページ PHPフレームワーク Laravel [整理と共有] Laravel モデルのタイムスタンプを使用するための 8 つのヒント

[整理と共有] Laravel モデルのタイムスタンプを使用するための 8 つのヒント

Sep 22, 2022 pm 08:18 PM
php laravel

以下では、Laravel チュートリアルのコラムで、Laravel モデルのタイムスタンプの使用方法に関する 8 つのヒントを紹介します。使用したことがないかどうかを確認してください。まだ使用していない場合は、集めに来てください。皆さんのお役に立てれば幸いです。

[整理と共有] Laravel モデルのタイムスタンプを使用するための 8 つのヒント

デフォルトでは、Laravel Eloquent モデルのデフォルト データ テーブルには created_atupdated_at が含まれていますフィールドが 2 つあります。もちろん、多くのカスタム構成を作成し、多くの興味深い機能を実装することができます。以下に例を示します。


1. タイムスタンプを無効にする

データ テーブルにこれら 2 つのフィールドがない場合、データを保存するときに Model::create($arrayOfValues ); ——SQL エラー が表示されます。 Laravel created_at / updated_at を自動入力する場合、これら 2 つのフィールドが見つかりません。

タイムスタンプの自動入力を無効にし、Eloquent Model に前の属性を追加するだけです:

class Role extends Model
{
    public $timestamps = FALSE;

    // ... 其他的属性和方法
}
ログイン後にコピー

2. タイムスタンプのデフォルトのリストを変更します

現在、Laravel 以外のタイプのデータベースを使用している場合、つまりタイムスタンプ列の名前が異なる場合はどうなりますか?おそらく、それぞれ create_timeupdate_time と呼ばれます。おめでとうございます。モデル内で次のように定義することもできます:

class Role extends Model
{
    const CREATED_AT = 'create_time';
    const UPDATED_AT = 'update_time';
ログイン後にコピー

3. タイムスタンプの日付/時刻形式を変更します

次の内容は、公式 Laravel ドキュメント:

デフォルトでは、タイムスタンプは自動的に 'Y-m-d H:i:s' としてフォーマットされます。タイムスタンプ形式をカスタマイズする必要がある場合は、モデルで $dateFormat プロパティを設定できます。このプロパティは、日付がデータベースに保存される形式、および配列または JSON にシリアル化されるときの形式を決定します:

class Flight extends Model
{
    /**
     * 日期时间的存储格式
     *
     * @var string
     */
    protected $dateFormat = 'U';
}
ログイン後にコピー

4. 多対多: タイムスタンプ付きの中間テーブル

多対多の関連付けの場合、ユーザー テーブル users とロールの間の中間テーブル role_user# など、タイムスタンプは自動的に入力されません。テーブル 役割 ##。

このモデルでは、次のように関係を定義できます:

class User extends Model
{
    public function roles()
    {
        return $this->belongsToMany(Role::class);
    }
}
ログイン後にコピー
その後、ユーザーにロールを追加する場合は、次のように使用できます:

$roleID = 1;
$user->roles()->attach($roleID);
ログイン後にコピー
デフォルトでは、この中央のテーブル

にはタイムスタンプ が含まれません。そして Laravelcreated_at/updated_at

を自動入力しようとしませんが、タイムスタンプを自動的に保存したい場合は、移行ファイル

を追加し、->withTimestamps();

public function roles()
{
    return $this->belongsToMany(Role::class)->withTimestamps();
}
ログイン後にコピー


5 を追加します。

latest() と ## を使用します。 #oldest()タイムスタンプ ソートの実行タイムスタンプ ソートを使用するには 2 つの「ショートカット メソッド」があります。

代わりに:

User::orderBy('created_at', 'desc')->get();
ログイン後にコピー
これは高速です:

User::latest()->get();
ログイン後にコピー
デフォルトでは、

latest()

created_at ソートを使用します。 これに対応して、oldest()

があり、このようにソートされます

created_at ascending

User::oldest()->get();
ログイン後にコピー
もちろん、他のものを使用することもできます。指定したフィールドを並べ替えます。たとえば、updated_at を使用したい場合は、次のように実行できます:

$lastUpdatedUser = User::latest('updated_at')->first();
ログイン後にコピー
6.
updated_at

# の変更をトリガーしないでください。 ##Eloquent レコードが変更されるたびに、現在のタイムスタンプが updated_at

フィールドを維持するために自動的に使用されます。これは優れた機能です。

しかし、これを実行したくない場合もあります。たとえば、特定の値を追加するとき、これは「行全体の更新」ではないと考えます。 次に、上記と同じことを行うことができます - タイムスタンプ

を無効にするだけで、これは一時的なものであることを覚えておいてください:

$user = User::find(1);
$user->profile_views_count = 123;
$user->timestamps = false;
$user->save();
ログイン後にコピー

7. スタンプとタイムスタンプのみを更新します。関連するタイムスタンプ


前の例とは逆に、他の列を変更せずに

updated_at フィールドのみを更新する必要があるかもしれません。

したがって、次の記述方法は推奨されません:

$user->update(['updated_at' => now()]);
ログイン後にコピー
より高速な方法を使用できます:
$user->touch();
ログイン後にコピー
別の状況では、現在のモデルを更新するだけではない場合もあります。

updated_at

は、優れた関係の記録を更新することも望んでいます。

たとえば、

comment が更新された場合、post

テーブルの

updated_at を更新するとします。 次に、モデルで $touches 属性を定義する必要があります:

class Comment extends Model {

    protected $touches = ['post'];

    public function post()
    {
        return $this->belongsTo('Post');
    }

}
ログイン後にコピー

8. タイムスタンプ フィールドの自動変換Carbon

Class

最後のヒントですが、すでにご存知のはずなので、リマインダーのようなものです。 デフォルトでは、created_at

フィールドと

updated_at

フィールドは自動的に

$dates, に変換されるため、変換する必要はありません。それらを Carbon インスタンスにコピーする、つまり Carbon のメソッドを使用できます。
例:

$user->created_at->addDays(3);
now()->diffInDays($user->updated_at);
ログイン後にコピー
以上、簡単ですが役立つヒントでした。

英語の元のアドレス: https://laraveldaily.com/8-tricks-with-laravel-timestamps/

翻訳アドレス: https://learnku.com/laravel/ t/39353

以上が[整理と共有] Laravel モデルのタイムスタンプを使用するための 8 つのヒントの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

Cakephp4 で日付と時刻を操作するには、利用可能な FrozenTime クラスを利用します。

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

CakePHP バリデータの作成 CakePHP バリデータの作成 Sep 10, 2024 pm 05:26 PM

Validator は、コントローラーに次の 2 行を追加することで作成できます。

CakePHP クイックガイド CakePHP クイックガイド Sep 10, 2024 pm 05:27 PM

CakePHP はオープンソースの MVC フレームワークです。これにより、アプリケーションの開発、展開、保守がはるかに簡単になります。 CakePHP には、最も一般的なタスクの過負荷を軽減するためのライブラリが多数あります。

CakePHP のロギング CakePHP のロギング Sep 10, 2024 pm 05:26 PM

CakePHP へのログインは非常に簡単な作業です。使用する関数は 1 つだけです。 cronjob などのバックグラウンド プロセスのエラー、例外、ユーザー アクティビティ、ユーザーが実行したアクションをログに記録できます。 CakePHP でのデータのログ記録は簡単です。 log()関数が提供されています

See all articles