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

时间:2018-06-07 18:52:22

标签: laravel-5 laravel-5.6

我正在使用laravel 5.6 multi auth,我有3名警卫管理员,专业人士,用户。我正在将此包https://github.com/richan-fongdasen/eloquent-blameable用于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。

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

1 个答案:

答案 0 :(得分: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