2017-12-08 15 views
0

저는 Laravel 프로젝트를 진행하고 있습니다. 이 명령을 실행하고 성공적으로 알림 테이블을 만들었습니다.Laravel 알림 기본 테이블을 찾을 수 없습니다.

php artisan notifications:table 
php artisan migrate 

모든 것이 완벽하게 진행되고있었습니다. 나중에 "notifications_for_admin"이라는 마이그레이션으로 모델 이름 "NotificationsForAdmin"을 만든 다음 나중에이 테이블을 처형했습니다. 이제 내가 몇 가지 알림을 생성하려고 할 때이 오류를 표시하고 있습니다. 완벽한 스키마가있는 laravel 알림에 필요한 데이터베이스에 알림 테이블이 있습니다. 오류는 다음과 같습니다

SQLSTATE[42S02]: Base table or view not found: 1146 Table 'followup.notification_for_admins' doesn't exist (SQL: select * from `notification_for_admins` where `notification_for_admins`.`user_id` = 2 and `notification_for_admins`.`user_id` is not null) 

내 알림입니다 : 사람이 나를 도울 수 있다면

<?php 

namespace App\Notifications; 

use Illuminate\Bus\Queueable; 
use App\User; 
use Illuminate\Notifications\Notification; 
use Illuminate\Contracts\Queue\ShouldQueue; 
use Illuminate\Notifications\Messages\BroadcastMessage; 
use Illuminate\Notifications\Messages\MailMessage; 
use App\Events\NewEmailReceivedEvent; 
use Auth; 

    class NewEmailReceived extends Notification 
    { 
     use Queueable; 

     public $sender_id, $receiver_id, $sender_name, $receiver_name, $sender_type, $receiver_type, $type, $recipient, $from_email, $subject, $message, $image, $receiver_image, $attachments, $sizesOfAttachments, $originalFileNames, $thread_id, $id_of_email; 

     /** 
     * Create a new notification instance. 
     * 
     * @return void 
     */ 
     public function __construct($sender_id, $receiver_id, $sender_name, $receiver_name, $sender_type, $receiver_type, $type, $recipient, $from_email, $subject, $message, $image, $receiver_image, $attachments, $sizesOfAttachments, $originalFileNames, $thread_id, $id_of_email) 
     { 
      $this->sender_id = $sender_id; 
      $this->receiver_id = $receiver_id; 
      $this->sender_name = $sender_name; 
      $this->receiver_name = $receiver_name; 
      $this->sender_type = $sender_type; 
      $this->receiver_type = $receiver_type; 
      $this->type = $type; 
      $this->recipient = $recipient; 
      $this->from_email = $from_email; 
      $this->subject = $subject; 
      $this->message = $message; 
      $this->image = $image; 
      $this->receiver_image = $receiver_image; 
      $this->attachments = $attachments; 
      $this->sizesOfAttachments = $sizesOfAttachments; 
      $this->originalFileNames = $originalFileNames; 
      $this->thread_id = $thread_id; 
      $this->id_of_email = $id_of_email; 
     } 

     /** 
     * Get the notification's delivery channels. 
     * 
     * @param mixed $notifiable 
     * @return array 
     */ 
     public function via($notifiable) 
     { 
      $notifications = Auth::user()->notifications; 
      if ($notifications[7]->shown == 1) { 
       return ['mail', 'database']; 
      } 
      else{ 
       return ['database']; 
      } 
     } 

     /** 
     * Get the array representation of the notification. 
     * 
     * @param mixed $notifiable 
     * @return array 
     */ 
     public function toDatabase($notifiable) 
     { 
      return [ 
       'sender_id' => $this->sender_id, 
       'receiver_id' => $this->receiver_id, 
       'sender_name' => $this->sender_name, 
       'receiver_name' => $this->receiver_name, 
       'sender_type' => $this->sender_type, 
       'receiver_type' => $this->receiver_type, 
       'type' => $this->type, 
       'recipient' => $this->recipient, 
       'from_email' => $this->from_email, 
       'subject' => $this->subject, 
       'message' => $this->message, 
       'image' => $this->image, 
       'receiver_image' => $this->receiver_image, 
       'attachments' => $this->attachments, 
       'sizesOfAttachments' => $this->sizesOfAttachments, 
       'originalFileNames' => $this->originalFileNames, 
       'thread_id' => $this->thread_id, 
       'id_of_email' => $this->id_of_email, 
      ]; 
      event(new NewEmailReceivedEvent($NewEmailReceivedRequest)); 
      return $NewEmailReceivedRequest; 
     } 

     /** 
     * Get the mail representation of the notification. 
     * 
     * @param mixed $notifiable 
     * @return \Illuminate\Notifications\Messages\MailMessage 
     */ 
     public function toMail($notifiable) 
     { 
      return (new MailMessage) 
       ->subject("New email from ".$this->sender_type) 
       ->greeting('Hello!') 
       ->markdown('mails.NewEmailReceived' , ['recipient_name' => $this->receiver_name , 'subject' => $this->subject , 'mailMessage' => str_limit($this->message, 50) , 'avatar' => $this->image]); 
     } 


     /** 
     * Get the array representation of the notification. 
     * 
     * @param mixed $notifiable 
     * @return array 
     */ 
     public function toArray($notifiable) 
     { 
      return [ 
       // 
      ]; 
     } 
    } 

나는 매우 thankfull한다.

+0

데이터베이스의 테이블 이름은 무엇입니까? –

답변

0

User 개체의 notifications 관계가 여전히 NotificationsForAdmin을 참조한 것으로 보입니다.

모델에 테이블을 지정하지 않으면 표가 모델 이름의 snake_case 문자열로 자동 생성됩니다. NotificationsForAdmin의 경우이 값은 notification_for_admins이됩니다.

공개 속성 $table을 알림을 값으로 저장하는 테이블 이름과 함께 NotificationsForAdmin에 추가하십시오. 이렇게하면 문제가 해결됩니다.

+0

대단히 감사합니다. 문제가 해결되었습니다. –