[정리 및 공유] Laravel 모델 타임스탬프 사용을 위한 8가지 팁
아래 Laravel 튜토리얼 칼럼에서는 Laravel 모델 타임스탬프를 사용하는 방법에 대한 8가지 팁을 공유합니다. 아직 사용해 본 적이 없다면 컬렉션에 추가해 보세요.
기본적으로 Laravel Eloquent
모델 기본 데이터 테이블에는 created_at
및 updated_at
라는 두 개의 필드가 있습니다. 물론, 우리는 많은 사용자 정의 구성을 만들고 많은 흥미로운 기능을 구현할 수 있습니다. 다음은 몇 가지 예입니다. Laravel Eloquent
模型默认数据表有 created_at
和 updated_at
两个字段。当然,我们可以做很多自定义配置,实现很多有趣的功能。下面举例说明。
1.禁用时间戳
如果数据表没有这两个字段,保存数据时 Model::create($arrayOfValues); ——会看到 SQL error
。Laravel
在自动填充 created_at / updated_at
的时候,无法找到这两个字段。
禁用自动填充时间戳,只需要在 Eloquent Model
添加上一个属性:
class Role extends Model { public $timestamps = FALSE; // ... 其他的属性和方法 }
2. 修改时间戳默认列表
假如当前使用的是非 Laravel
类型的数据库,也就是你的时间戳列的命名方式与此不同该怎么办? 也许,它们分别叫做 create_time 和 update_time。恭喜,你也可以在模型种这么定义:
class Role extends Model { const CREATED_AT = 'create_time'; const UPDATED_AT = 'update_time';
3. 修改时间戳日期/时间格式
以下内容引用官网文档 official Laravel documentation:
默认情况下,时间戳自动格式为 'Y-m-d H:i:s'
。 如果您需要自定义时间戳格式, 可以在你的模型中设置 $dateFormat
属性。这个属性确定日期在数据库中的存储格式,以及在序列化成数组或JSON时的格式:
class Flight extends Model { /** * 日期时间的存储格式 * * @var string */ protected $dateFormat = 'U'; }
4. 多对多: 带时间戳的中间表
当在多对多的关联中,时间戳不会自动填充,例如 用户表 users 和 角色表roles的中间表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();
public function roles() { return $this->belongsToMany(Role::class)->withTimestamps(); }
5. 使用latest()
和oldest()
进行时间戳排序
使用时间戳排序有两个 “快捷方法”。
取而代之:
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 字段,这是个非常棒的特性。
但是有时候你却不想这么做,例如:当增加某个值,认为这不是 “整行更新”。
那么,你可以一切如上—— 只需禁用 timestamps
,记住这是临时的:
$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
类
最后一个技巧,但更像是一个提醒,因为您应该已经知道它。
默认情况下,created_at和updated_at字段被自动转换为$dates,
所以您不需要将他们转换为Carbon
实例,即可以使用Carbon
1. 타임스탬프 비활성화
데이터 테이블에 이 두 필드가 없으면 데이터를 저장할 때 Model::create($arrayOfValues); 강함> ——SQL 오류
가 표시됩니다. Laravel
은 created_at /update_at
를 자동으로 채울 때 이 두 필드를 찾을 수 없습니다.
타임스탬프 자동 채우기를 비활성화하고
Eloquent Model
에 이전 속성을 추가하세요.
$user->created_at->addDays(3); now()->diffInDays($user->updated_at);
2. 타임스탬프 기본 목록 수정
기본값 이 경우 타임스탬프는 자동으로Laravel
이 아닌 데이터베이스를 사용하고 있고 타임스탬프 열의 이름이 다르게 지정되어 있다면 어떻게 될까요? 아마도 각각 create_time 및 update_time이라고 불릴 것입니다. 축하합니다. 모델에서 다음과 같이 정의할 수도 있습니다:rrreee
3. 타임스탬프 날짜/시간 형식 수정
다음 내용은 공식 Laravel 문서를 참조합니다.
'Y-m-d H:i:s'
형식으로 지정됩니다. 타임스탬프 형식을 맞춤설정해야 하는 경우 모델에서 $dateFormat
속성을 설정할 수 있습니다. 이 속성은 날짜가 데이터베이스에 저장되는 형식과 배열 또는 JSON으로 직렬화되는 형식을 결정합니다: 🎜rrreee🎜
4: 타임스탬프가 있는 중간 테이블 h3 >🎜다대다 연결에서는 사용자 테이블 users와 역할 테이블 사이의 중간 테이블 role_user와 같이 타임스탬프가 자동으로 채워지지 않습니다. 역할 >. 🎜🎜이 모델에서는 다음과 같이 관계를 정의할 수 있습니다: 🎜rrreee🎜 그런 다음 사용자에게 역할을 추가하려는 경우 다음과 같이 사용할 수 있습니다. 🎜rrreee🎜기본적으로 이 중간 테이블은 타임스탬프 . 그리고 Laravel
은 created_at/updated_at
🎜🎜을 자동으로 채우려고 시도하지 않습니다. 하지만 타임스탬프를 자동으로 저장하려면 created_at/updated_at
를 추가해야 합니다. > 마이그레이션 파일 코드>에 ->withTimestamps();🎜rrreee🎜5. latest()
및 oldest()
타임스탬프 정렬 수행
🎜타임스탬프 정렬을 사용하는 데는 두 가지 "단축 방법"이 있습니다. 🎜🎜대신: 🎜rrreee🎜이렇게 하는 것이 더 빠릅니다. 🎜rrreee🎜기본적으로 latest()는 created_at 정렬을 사용합니다. 🎜🎜따라서 oldest()가 있는데, 이는 created_at 오름차순🎜rrreee🎜물론, 지정된 다른 필드를 기준으로 정렬할 수도 있습니다. 예를 들어, updated_at을 사용하려면 다음과 같이 하면 됩니다. 🎜rrreee🎜
6 updated_at
수정을 트리거하지 마세요. >
🎜 Eloquent
레코드가 수정될 때마다 현재 타임스탬프가 자동으로 사용되어 updated_at 필드를 유지하는데 이는 훌륭한 기능입니다. 🎜🎜그러나 때로는 이 작업을 수행하고 싶지 않을 수도 있습니다. 예를 들어 특정 값을 추가할 때 이것이 "전체 행 업데이트"가 아니라고 생각합니다. 🎜🎜그런 다음 위와 같이 계속할 수 있습니다. 타임스탬프
를 비활성화하세요. 이는 일시적인 것임을 기억하세요. 🎜rrreee🎜7 타임스탬프 및 관련 타임스탬프만 업데이트하세요 Strong>🎜이전 예와 달리 다른 열은 변경하지 않고 updated_at 필드만 업데이트해야 할 수도 있습니다. 🎜🎜따라서 다음 작성 방법은 권장되지 않습니다: 🎜rrreee🎜더 빠른 방법을 사용할 수 있습니다: 🎜rrreee🎜또 다른 상황에서는 때로는 현재 모델의 updated_at을 업데이트하고 싶을 뿐만 아니라, 또한 우수한 관계의 기록을 업데이트하고 싶습니다. 🎜🎜예를 들어 댓글이 업데이트되면 post 테이블의 updated_at
도 업데이트하려고 합니다. 🎜🎜그런 다음 모델에서 $touches
속성을 정의해야 합니다. 🎜rrreee🎜
8 타임스탬프 필드는 자동으로 Carbon
으로 변환됩니다. class
🎜마지막 팁이지만, 이미 알고 있어야 하므로 상기시켜주는 것이 좋습니다. 🎜🎜기본적으로 created_at 및 updated_at 필드는 자동으로 $dates로 변환되므로 🎜이를 Carbon 인스턴스, 즉 Carbon
메서드를 사용할 수 있습니다. 🎜🎜예: 🎜rrreee🎜🎜바로 그 것입니다. 빠르고 유용한 팁입니다! 🎜🎜🎜영어 원문 주소: https://laraveldaily.com/8-tricks-with-laravel-timestamps/🎜🎜번역 주소: https://learnku.com/laravel/t/39353🎜🎜
latest()
및 oldest()
타임스탬프 정렬 수행updated_at
수정을 트리거하지 마세요. >updated_at
도 업데이트하려고 합니다. 🎜🎜그런 다음 모델에서 $touches
속성을 정의해야 합니다. 🎜rrreee🎜
8 타임스탬프 필드는 자동으로 Carbon
으로 변환됩니다. class
🎜마지막 팁이지만, 이미 알고 있어야 하므로 상기시켜주는 것이 좋습니다. 🎜🎜기본적으로 created_at 및 updated_at 필드는 자동으로 $dates로 변환되므로 🎜이를 Carbon 인스턴스, 즉 Carbon
메서드를 사용할 수 있습니다. 🎜🎜예: 🎜rrreee🎜🎜바로 그 것입니다. 빠르고 유용한 팁입니다! 🎜🎜🎜영어 원문 주소: https://laraveldaily.com/8-tricks-with-laravel-timestamps/🎜🎜번역 주소: https://learnku.com/laravel/t/39353🎜🎜위 내용은 [정리 및 공유] Laravel 모델 타임스탬프 사용을 위한 8가지 팁의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Laraveleloquent 모델 검색 : 데이터베이스 데이터를 쉽게 얻을 수 있습니다. 이 기사는 데이터베이스에서 데이터를 효율적으로 얻는 데 도움이되는 다양한 웅변 모델 검색 기술을 자세히 소개합니다. 1. 모든 기록을 얻으십시오. 모든 () 메소드를 사용하여 데이터베이스 테이블에서 모든 레코드를 가져옵니다. 이것은 컬렉션을 반환합니다. Foreach 루프 또는 기타 수집 방법을 사용하여 데이터에 액세스 할 수 있습니다 : Foreach ($ postas $ post) {echo $ post->

PHP의 미래는 새로운 기술 트렌드에 적응하고 혁신적인 기능을 도입함으로써 달성 될 것입니다. 1) 클라우드 컴퓨팅, 컨테이너화 및 마이크로 서비스 아키텍처에 적응, Docker 및 Kubernetes 지원; 2) 성능 및 데이터 처리 효율을 향상시키기 위해 JIT 컴파일러 및 열거 유형을 도입합니다. 3) 지속적으로 성능을 최적화하고 모범 사례를 홍보합니다.

7 백만 레코드를 효율적으로 처리하고 지리 공간 기술로 대화식지도를 만듭니다. 이 기사는 Laravel과 MySQL을 사용하여 7 백만 개 이상의 레코드를 효율적으로 처리하고 대화식지도 시각화로 변환하는 방법을 살펴 봅니다. 초기 챌린지 프로젝트 요구 사항 : MySQL 데이터베이스에서 7 백만 레코드를 사용하여 귀중한 통찰력을 추출합니다. 많은 사람들이 먼저 프로그래밍 언어를 고려하지만 데이터베이스 자체를 무시합니다. 요구 사항을 충족시킬 수 있습니까? 데이터 마이그레이션 또는 구조 조정이 필요합니까? MySQL이 큰 데이터로드를 견딜 수 있습니까? 예비 분석 : 주요 필터 및 속성을 식별해야합니다. 분석 후, 몇 가지 속성만이 솔루션과 관련이 있음이 밝혀졌습니다. 필터의 타당성을 확인하고 검색을 최적화하기위한 제한 사항을 설정했습니다. 도시를 기반으로 한지도 검색

PHP와 Python은 각각 고유 한 장점이 있으며 선택은 프로젝트 요구 사항을 기반으로해야합니다. 1.PHP는 간단한 구문과 높은 실행 효율로 웹 개발에 적합합니다. 2. Python은 간결한 구문 및 풍부한 라이브러리를 갖춘 데이터 과학 및 기계 학습에 적합합니다.

PHP는 현대 웹 개발, 특히 컨텐츠 관리 및 전자 상거래 플랫폼에서 중요합니다. 1) PHP는 Laravel 및 Symfony와 같은 풍부한 생태계와 강력한 프레임 워크 지원을 가지고 있습니다. 2) Opcache 및 Nginx를 통해 성능 최적화를 달성 할 수 있습니다. 3) PHP8.0은 성능을 향상시키기 위해 JIT 컴파일러를 소개합니다. 4) 클라우드 네이티브 애플리케이션은 Docker 및 Kubernetes를 통해 배포되어 유연성과 확장 성을 향상시킵니다.

PHP와 Python은 각각 고유 한 장점이 있으며 프로젝트 요구 사항에 따라 선택합니다. 1.PHP는 웹 개발, 특히 웹 사이트의 빠른 개발 및 유지 보수에 적합합니다. 2. Python은 간결한 구문을 가진 데이터 과학, 기계 학습 및 인공 지능에 적합하며 초보자에게 적합합니다.

Laravel은 백엔드 논리에서 어떻게 중요한 역할을합니까? 라우팅 시스템, eloquentorm, 인증 및 승인, 이벤트 및 청취자, 성능 최적화를 통해 백엔드 개발을 단순화하고 향상시킵니다. 1. 라우팅 시스템은 URL 구조의 정의 및 요청 처리 로직을 정의 할 수 있습니다. 2. eloquentorm은 데이터베이스 상호 작용을 단순화합니다. 3. 인증 및 인증 시스템은 사용자 관리에 편리합니다. 4. 이벤트와 리스너는 느슨하게 결합 된 코드 구조를 구현합니다. 5. 성능 최적화는 캐싱 및 대기열을 통한 응용 프로그램 효율성을 향상시킵니다.

PHP가 많은 웹 사이트에서 선호되는 기술 스택 인 이유에는 사용 편의성, 강력한 커뮤니티 지원 및 광범위한 사용이 포함됩니다. 1) 배우고 사용하기 쉽고 초보자에게 적합합니다. 2) 거대한 개발자 커뮤니티와 풍부한 자원이 있습니다. 3) WordPress, Drupal 및 기타 플랫폼에서 널리 사용됩니다. 4) 웹 서버와 밀접하게 통합하여 개발 배포를 단순화합니다.
