Laravel을 사용하여 알림 시스템을 구축하는 방법
PHP Artisan 알림 실행 : 테이블 및 마이그레이션 데이터베이스 설정. 2. PHP Artisan Make를 사용하여 알림 클래스를 만듭니다 : 알림 NewMessageReceived 및 VIA Method, Todatabase의 데이터 및 ToBroadcast의 실시간 방송에서 채널을 정의합니다. 3. $ user-> notify (New NewMessageReceived ($ message))를 통해 알림을 보내거나 여러 사용자에게 알림 외관을 사용하십시오. 4. Auth ()-> user ()-> 알림 또는 읽지 않은 Notifications를 사용하여 알림을 가져오고 MarkAsread ()로 읽은대로 표시하십시오. 5. 실시간 업데이트의 경우 푸셔 또는 Laravel Echo로 브로드 캐스트를 구성하고 알림을 위해 개인 채널에서 듣습니다. 6. 조건부로 채널을 반환하거나 데이터베이스 스키마를 수정하거나 소프트 삭제를 처리하여 동작을 사용자 정의합니다. Laravel의 알림 시스템을 사용하면 깨끗하고 일관된 API를 사용하여 여러 채널을 통해 완벽하게 전달할 수 있습니다.
Laravel에 알림 시스템을 구축하는 것은 내장 알림 기능 덕분에 간단합니다. Laravel은 데이터베이스, 이메일, SMS 등과 같은 여러 채널에서 알림을 보낼 수있는 깨끗하고 유연한 방법을 제공합니다. Laravel의 기본 도구를 사용하여 완전한 알림 시스템을 설정하는 방법은 다음과 같습니다.
1. 알림을 위해 데이터베이스를 설정하십시오
먼저 Laravel은 notifications
테이블을 사용하여 데이터베이스 알림을 저장합니다. 마이그레이션 생성 :
PHP 장인 알림 : 테이블
그런 다음 마이그레이션을 실행하십시오.
PHP 장인 이주
id
, type
, notifiable_id
, notifiable_type
, data
및 read_at
와 같은 필드가있는 notifications
테이블이 생성됩니다.
2. 알림 클래스를 만듭니다
장인을 사용하여 알림을 생성합니다.
PHP Artisan Make : NewMessageReceived
이것은 app/Notifications/NewMessageReceived.php
에서 클래스를 만듭니다. 알림을 전달하는 방법을 정의하기 위해 편집하십시오.
<? php 네임 스페이스 앱 \ 알림; Illuminate \ bus \ queueable을 사용하십시오. Illuminate \ Contracts \ Queue \ Distqueue를 사용하십시오. Illuminate \ Notifications \ Messages \ DatabasEmessage를 사용하십시오. Illuminate \ 알림 \ 알림을 사용합니다. 클래스 NewMessageReceived는 알림 구현을 확장해야합니다 { queuable을 사용하십시오. 공개 $ 메시지; 공개 기능 __construct ($ 메시지) { $ this-> 메시지 = $ 메시지; } // 사용할 채널을 정의하십시오 : 데이터베이스, 메일, 방송 등 ($ notifiable)를 통해 공개 기능 { 반환 [ '데이터베이스', '방송']; // 필요한 경우 '메일'도 추가하십시오 } // 데이터베이스에서 알림을 저장합니다 공개 기능 todatabase ($ notifiable) { 반품 [ '메시지'=> $ this-> 메시지, 'sender_id'=> auth ()-> id (), 'sender_name'=> auth ()-> user ()-> name, 'url'=> url ( '/message/'. $ this-> message-> id) ]; } // 선택 사항 : Laravel Echo를 통한 방송 (실시간 UI 업데이트 용) 공개 기능 tobroadcast ($ notifiable) { 새로운 BroadcastMessage를 반환합니다 ([[[ '메시지'=> $ this-> 메시지, 'sender_name'=> auth ()-> user ()-> name, 'create_at'=> now ()-> todateMestring () ]); } }
참고 : 더 나은 성능을 위해 알림을 비동기 적으로 전송하기 위해
ShouldQueue
구현하십시오.
3. 알림을 보내십시오
notify()
메소드를 사용하여 사용자에게 알림을 보낼 수 있습니다.
app \ altifications \ newMessageReceived를 사용하십시오. App \ Models \ User를 사용합니다. $ user = user :: find (1); // 받는 사람 $ message = // 메시지 모델 또는 데이터 $ user-> notify (New NewMessageReceived ($ message));
또는 Notification
외관을 사용하여 여러 사용자에게 보내십시오.
Illuminate \ support \ Facades \ 알림을 사용하십시오. 알림 :: send (user :: all (), new NewMessageReceived ($ message));
4. 프론트 엔드에 표시 알림을 표시합니다
컨트롤러에서 읽지 않은 알림 가져 오기 :
공개 기능 getNotifications () { return auth ()-> user ()-> 알림; } 공개 기능 getUnReadNotifications () { return auth ()-> user ()-> 읽지 않음; }
알림을 읽은대로 표시하십시오.
$ notification = auth ()-> user ()-> notifications ()-> 찾기 ($ id); $ notification-> markAsread ();
또는 모두 읽은대로 표시하십시오.
Auth ()-> user ()-> markAsread ();
블레이드 템플릿에서 :
<ul> @foreach (auth ()-> user ()-> undereadnotifications as $ untification) <li> {{$ notification-> data [ 'message']}} {{$ notification-> data [ 'sender_name']}} </li> @endforeach </ul>
5. 방송을 통한 실시간 알림 (선택 사항)
실시간 알림 표시 :
- 방송 (예 : Pusher, Redis Laravel Echo Server)을 설정합니다.
- 알림에서
toBroadcast()
업데이트하십시오. - JavaScript로 듣기 :
'Laravel-Echo'에서 Echo 가져 오기; window.echo.private (`app.models.user. $ {userId}`) .notification ((알림) => { console.log (notification.message); // UI 업데이트 : 알림 드롭 다운에 추가 });
방송에서 사용자 모델이 올바르게 해결되었는지 확인하십시오 ( config/broadcasting.php
및 인증 확인).
6. 알림 동작을 사용자 정의합니다
- 조건부 채널 : 로직에 따라 다른 채널을 반환합니다.
($ notifiable)를 통해 공개 기능 { $ 채널 = [ '데이터베이스']; if ($ notifiable-> email_notifications) { $ 채널 [] = '메일'; } $ 채널을 반환합니다. }
- 사용자 정의 데이터베이스 스키마 :
type
,icon
등과 같은 추가 필드를 추가하도록 마이그레이션을 수정하십시오. - 소프트 삭제 : 알림은 기본적으로 소프트 삭제됩니다.
forceDelete()
사용하여 영구적으로 제거하십시오.
요약
Laravel의 알림 시스템은 강력하고 사용하기 쉽습니다. 주요 단계 :
-
notifications:table
마이그레이션 -
via
,toDatabase
등으로 알림 클래스를 만듭니다. -
$user->notify()
사용하여 알림 보내기 - 보기와 전시
- 실시간 업데이트를 위해 방송을 추가하십시오
이 설정을 사용하면 일관된 API를 통해 경고, 메시지, 알림 등을 처리 할 수 있습니다. 기본적으로 구성, 전송 및 표시 만하면됩니다.
위 내용은 Laravel을 사용하여 알림 시스템을 구축하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

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

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

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

Stock Market GPT
더 현명한 결정을 위한 AI 기반 투자 연구

인기 기사

뜨거운 도구

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

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

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

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

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

모델 및 마이그레이션 생성 : PhpartisanMake : ModelPost-M을 사용하여 모델 및 마이그레이션 파일을 생성하고 테이블 구조를 정의하고 PhPartisanGiGrate를 실행하십시오. 2. 기본 CRUD 작업 : post :: all (), find (), create (), save () 및 delete () 메소드를 사용하여 데이터를 쿼리, 작성, 업데이트 및 삭제합니다. 3. Eloquent Association 사용 : 모델에서 Solgsto 및 Hasmany 관계를 정의하고 with () 메소드를 사용하여 관련 데이터를 사전로드하여 N 1 쿼리 문제를 피하십시오. 4. 웅변 쿼리 : 쿼리 생성자를 사용하여 체인 호출을 어디에

installthespatie/laravel-sitemappackageusingcomposerandpublishitsconfigfileifneed.2.createarOutetEgenerAteAteAteAtEteTeMapDynamically, OneByWritingItToAfileOroutPuttingXMlDirecton.3.CustOmizETheMAPByAddingStaticAnmamicUrls

다형성 상관 관계 제시자 라벨로 아라 모드 리크 커먼 토리마다 벨롱 곤트 류드 렘 델스 슈카 스파 스 포스트, 비디오, oruserusingasingLeassociation.2. oruserusingAdAsingLeassociation.2

리소스/lang/en 및 리소스/lang/es와 같은 디렉토리를 작성하고 Messages.php 언어 파일을 정의합니다. 2. config/app.php에서 기본 언어 로케일 및 대체 언어 fallback_locale을 설정합니다. 3. app :: setlocale ()을 사용하여 언어를 동적으로 전환하고 미들웨어를 결합하여 세션 또는 요청 헤더에 따라 자동으로 설정하십시오. 4. 라우팅 패킷을 통해 다국어 URL을 구현하기 위해 {locale} 접두사를 추가하고 템플릿에서 로컬화 된 링크를 생성합니다. 5. __ () 함수 또는 @LANG 명령을 사용하여 컨트롤러 및 뷰에서 번역을 호출하여 복수 양식 viartrans_choice를 지원합니다.

runphpartisannoTifications : TableIndMigrateToSetupTheDatabase.2.CreateAnotificationClassusingPhpartisAnmake : NotificationNewMessagerEceivedandDefineChannelsinTheviAmedod, DataintOdatabase, Andreal-timebroadcastingintobroadcast.3.sendnotificationsvia $ use

언어 파일 생성 : 리소스/lang 디렉토리에서 각 언어 (예 : en, es)에 대한 하위 디렉토리를 만들고 messages.php 파일을 추가하거나 JSON 파일을 사용하여 번역을 저장하십시오. 2. 애플리케이션 언어 설정 : 요청 헤더 읽기 헤더를 읽고 미들웨어를 통해 언어를 허용하거나 URL 접두사를 통해 언어를 감지하고 app ()-> setlocale ()을 사용하여 현재 언어를 설정하고 kernel.php에 미들웨어를 등록하십시오. 3. 번역 함수 사용 : 번역 내용을 얻으려면 __ (), trans () 또는 @lang을 사용하면 폴백을 지원하는 __ ()를 사용하는 것이 좋습니다. 4. 지원 매개 변수 및 복수 : 다음과 같은 번역 문자열에서 자리 표시자를 사용합니다.

Laravel의 작업을 예방하는 시스템은 PHP를 통해 타이밍 작업을 정의하고 관리 할 수 있습니다. 서버 Crontab을 수동으로 편집하지 않고 서버에 1 분에 한 번만 실행되는 CRON 작업 만 추가하면됩니다 : *CD/PATH-to-YOURPROJECT && PHPARTISANSCHEDUL : RUN >>/dev/null2> & 1, 그리고 모든 작업은 일정 구성에서 구성되어 있습니다. 1. 작업 정의는 $ 일정과 같은 명령, 전화 또는 실행 방법을 사용할 수 있습니다.

예, YouCancreateAcialnetworkwithLaravelByFollowingThesSteps : 1. SetuplaravelusingComposer, ConfiguretHe.envfile, enableAuthenticationViabreeze/jetstream/fortify, Andrunmigrations foruserManagement.2.implementcorefeatincludingusproffiles
