将Eloquent事件映射到专用类并获取登录用户的ID

问题描述 投票:1回答:1

我试图找出如何在侦听器的handle方法中访问登录用户ID。

这是听众的样子:

namespace App\Listeners;

use App\Events\ProjectWasDeleted;

class DeleteUserProjectMapping
{
    /**
     * Create the event listener.
     *
     * @return void
     */
    public function __construct()
    {
        //
    }

    /**
     * Handle the event.
     *
     * @param  ProjectWasDeleted  $event
     * @return void
     */
    public function handle(ProjectWasDeleted $event)
    {
        $project = $event->project->toArray();

        var_dump($project['id']); // This is working.

    }
}

这是事件的方式:

namespace App\Events;

use Illuminate\Queue\SerializesModels;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Broadcasting\InteractsWithSockets;

class ProjectWasDeleted
{
    use Dispatchable, InteractsWithSockets, SerializesModels;

    public $project;

    /**
     * Create a new event instance.
     *
     * @param $project
     */
    public function __construct($project)
    {
        $this->project = $project;

    }

    /**
     * Get the channels the event should broadcast on.
     *
     * @return \Illuminate\Broadcasting\Channel|array
     */
    public function broadcastOn()
    {
        return new PrivateChannel('channel-name');
    }
}

用户ID是必要的,因为我想在数据透视表中删除需要用户ID和项目ID的记录。

laravel laravel-5 eloquent laravel-eloquent
1个回答
1
投票

您可以全局访问当前用户实例:

auth()->user()

并获得ID:

auth()->id()

要么:

auth()->user()->id
© www.soinside.com 2019 - 2024. All rights reserved.