デフォルトでは、Laravel Eloquent モデルのデフォルト データ テーブルには、created_at と updated_at という 2 つのフィールドがあります。もちろん、多くのカスタム構成を作成し、多くの興味深い機能を実装することができます。以下に例を示します。
1. タイムスタンプを無効にする
データ テーブルにこれら 2 つのフィールドがない場合、データを保存するときに Model::create($arrayOfValues); が表示されます。 SQLエラー。 Laravel は、created_at / updated_at を自動的に埋めるときに、これら 2 つのフィールドを見つけることができません。
タイムスタンプの自動入力を無効にし、前の属性を Eloquent モデルに追加するだけです:
class Role extends Model { public $timestamps = FALSE; // ... 其他的属性和方法 }
2. タイムスタンプのデフォルトのリストを変更します
If Laravel 以外のデータベースを使用していて、タイムスタンプ列の名前が異なる場合はどうすればよいですか?おそらく、それらはそれぞれ create_time と update_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 の間の中間テーブル role_user など、タイムスタンプは自動的に入力されません。
このモデルでは、次のように関係を定義できます:
class User extends Model { public function roles() { return $this->belongsToMany(Role::class); } }
その後、ユーザーにロールを追加する場合は、次のように使用できます:
$roleID = 1; $user->roles()->attach($roleID);
デフォルトでは、この中央のテーブルにはタイムスタンプが含まれません。そして、Laravel は created_at/updated_at
を自動的に設定しようとしませんが、タイムスタンプを自動的に保存したい場合は、移行ファイルに created_at/updated_at を追加してから、モデルのファイルに ->withTimestamps() を追加する必要があります。 association ;
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.Eloquent レコードが変更されるたびに、updated_at
の変更をトリガーしないでください。現在のタイムスタンプを使用して 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 は、上位関係の記録も更新したいと考えています。
たとえば、コメントが更新された場合、post テーブルの updated_at を更新するとします。
次に、モデルで $touches 属性を定義する必要があります:
class Comment extends Model { protected $touches = ['post']; public function post() { return $this->belongsTo('Post'); } }
8. タイムスタンプ フィールドは自動的に Carbon クラス
## に変換されます。 #最後のヒントですが、すでにご存知のはずなので、リマインダーのようなものです。 デフォルトでは、created_at フィールドと updated_at フィールドは自動的に $dates に変換されます。したがって、Carbon のメソッドを使用するためにそれらを Carbon インスタンスに変換する必要はありません。 例:$user->created_at->addDays(3); now()->diffInDays($user->updated_at);以上、簡単ですが役立つヒントでした。 laravel フレームワークに関連する技術的な記事については、
laravel チュートリアル 列をご覧ください。
以上がLaravel モデルのタイムスタンプを使用するための 8 つのヒントの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ToenhanceEngagementAndCohesionAmongDistributedTeamSbeyOndzoom、実装してください

laravel10introducesseveralbreakingchanges:1)itrequirephp8.1orhigher、2)therouteSerseprovidernowuseSabootdododdoddoddoddoddoddoddoddoddoddoddoddod forloadingroutes、3)the withtimestamps()methodoneLoquentrelationshipsissisdedisded and4)andosnowprefrefreferure()

WOCUSANDMOTIVERIANCIANGINTIANIVERMOTEWORK、CREATERUCTUREDENVIRONMENT、MANAGEDIGITALDISTRACTIONS、FOSTERMOTIVERIVESTROUGHSOCIAL-INTERACTIONSIONDANDGOALSETTINTING、MANTEMESTECHNOLOGY.1)SetUpAdedicatedWorkStickEndStickToTtoTtoTtoTtoTototine。

tofostercollaboration and trustinRemoteteams、exprenttheStrategies:1)定期的で構造化された構造化された通信を確立します。

Laravelの主な機能の最新バージョンには、1。Laraveloctaneのアプリケーションパフォーマンスの向上、2。モデルファクトリーサポート関係と状態定義の改善、3。強化された職人コマンド、4。これらの機能は、開発効率とアプリケーションのパフォーマンスを大幅に改善しますが、潜在的な問題を回避するために注意して使用する必要があります。

トコンバティソルメントアンドロネリネスは、レモであり、regultionを実現し、等間grothopportunitionを提供し、効率的に使用します

laravelispopopularfulfull-stackdevelopment becuseiTOfferseamlessbbackEndpowendPowerandfflexibility.1)simplifyDatabaseItteractions.2)asbladetemplatingEngineallowsforclean、dynamictmltemplates.3)Laravelmix

ビデオ会議プラットフォームを選択する際の重要な要因には、ユーザーインターフェイス、セキュリティ、および機能が含まれます。 1)ズームなど、ユーザーインターフェイスは直感的である必要があります。 2)セキュリティに注意を払う必要があり、Microsoftチームはエンドツーエンドの暗号化を提供します。 3)機能は要件を一致させる必要があり、Googlemeetは短い会議に適しており、Ciscowebexは高度なコラボレーションツールを提供します。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

WebStorm Mac版
便利なJavaScript開発ツール

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

ホットトピック









