I am in the process of making realtime notifications and stumbled in this weird error. I have in my model a boot method which triggers an event called SendNotificationData (no listener). It handles when there is a new notification made.
Trial Controller
<?php
namespace App\Http\Controllers\Notification;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Models\Notification;
class NotificationController extends Controller
{  
    /**
     * Trigger event to display notifications. This displays 404 error page
     *
     * @return none
     */
    public function displayNotification()
    {
        $notification = new Notification();
        $notification->EmployeeID = "EMP-00001";
        $notification->NotificationText =  "There is a new notification";
        $notification->NotificationStatus = "unread";
        $notification->NotificationType = "trial";
        $notification->save();
    }
}
Notification model boot method:
/**
 * Handle booting of model.
 *
 * @var string
 */
 public static function boot()
 {
     static::created(function ($data) {
        event(new SendNotificationData($data));
     });
     parent::boot();
 }
This is my SendNotificationData event:
namespace App\Events;
use App\Events\Event;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
class SendNotificationData extends Event implements ShouldBroadcast
{
    use SerializesModels;
    public $new_notification_data;
    /**
     * Create a new event instance.
     *
     * @param $notification_data
     * @return void
     */
    public function __construct($new_notification_data)
    {
        $this->new_notification_data = $new_notification_data;
    }
    /**
     * Get the channels the event should be broadcast on.
     *
     * @return array
     */
    public function broadcastOn()
    {
        return ['new-notification'];
    }
    /**
     * Customize event name.
     *
     * @return array
     */
    public function broadcastAs()
    {
        return 'private-send-new-notification';
    }
}
On Javascript
var newNotificationChannel = pusher.subscribe('new-notification');
newNotificationChannel.bind("private-send-new-notification", function(data) {
        addNotification(data);
}); //This gives me no error in the console and the 404 error still shows up even if i remove this..
function addNotification(data)
{
    console.log(data);
    $('.notification-link').closest('li').append('<a href="#">This is a sample notification!!!</a>');
}
Now, If I try to test adding some random notification in my controller, the event fires. However, it shows me the 404 error page. When I removed the ShouldBroadcast interface or remove the contents of the constructor, the error no longer shows up. I am confused what would be causing such an error when my other events are working fine. I might have missed something so please guide me.
I can't believe it, it was caused by the $incrementing variable in the model being set to false instead of true. If only laravel would show me the proper error stack trace.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With