如何在laravel 5.6中处理多个auth警卫的created_by和updated_by列

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

我正在使用laravel 5.6 multi auth,我有3名警卫管理员,专业人士,用户。我正在使用这个包https://github.com/richan-fongdasen/eloquent-blameable for created_by,updated_by fields。

我有文章表,管理员可以创建帖子,专业人员也可以创建一个帖子,由前端用户查看。

我已将以下代码添加到管理模型中,每当我创建帖子时,creared_by和updated_by(如果我更新)都填入了登录的管理员用户ID。

public function blameable()
    {
        return [
            'user' => \App\Admin::class,
            'createdBy' => 'user_id',
            'updatedBy' => 'user_id'
        ];
    }

现在当我从专业人士部分创建帖子时,我希望createdBy和updatedBy成为专业ID。怎么做到这一点?

我是否需要创建一个单独的模型作为同一个表和使用的专业信息

public function blameable()
        {
            return [
                'user' => \App\Professional::class,
                'createdBy' => 'user_id',
                'updatedBy' => 'user_id'
            ];
        }

这是一个重要的字段,因为它1.显示文章的作者姓名,使用户知道谁撰写了文章。 2.帮助列出专业人员在其仪表板中创建的所有文章。

我脑子里有不同的想法,比如创建了一个额外的专栏:special_id(可空),如果从专业部分发布,将被填充,如果从管理员发布,则设置为null。

处理这个问题的最佳方法是什么?

laravel-5 laravel-5.6
1个回答
0
投票

您可以使用这个简单的库:

use Culpa\Traits\Blameable;
use Culpa\Traits\CreatedBy;
use Culpa\Traits\DeletedBy;
use Culpa\Traits\UpdatedBy;
use Illuminate\Database\Eloquent\Model

class Comment extends Model
{
    use Blameable, CreatedBy, UpdatedBy;

    protected $blameable = array('created', 'updated', 'deleted');

    // Other model logic here
}

如何安装:https://github.com/nstapelbroek/culpa-laravel-5

© www.soinside.com 2019 - 2024. All rights reserved.