扩展spatie laravel-activitylogs活动模型并添加新的可填写

时间:2017-11-08 21:28:18

标签: model laravel-5.4

我正在使用Laravel 5.4应用程序,并尝试安装spatie / laravel-activitylog v1.16(旧版本,因为我不确定较新的v2.4.3是否可以使用5.4)link to package

我的问题是包说我可以使用包ReasonActivity Trait添加一个causer。我将它添加到Company模型中,因为每个模型都有一个company_id属性,但是没有用。 我有一个公司,有很多用户希望在创建日志时将公司ID添加到表中。 我创建了一个CompanyLogActivity模型,该模型扩展了活动模型,并将(company)中的company_id列添加到activity_log表中,并将新模型添加到配置文件中。

然后我尝试了:

添加belongsToTenant Trait毫无用处

use Illuminate\Database\Eloquent\Model;  
use Spatie\Activitylog\Models\Activity;  
use HipsterJazzbo\Landlord\BelongsToTenants;   
class CompanyActivityLogs extends Activity  
{  
    use BelongsToTenants;  
    protected $table = ['activity_log'];  
    public $tenantColumns = ['company_id'];  
 }    

在模型上使用$ fillable并观察创建或保存以填充company_id

<?php

namespace App\Observers;  
use App\CompanyActivityLogs;  
use Auth;  
use Spatie\Activitylog\Models\Activity;  
class CompanyActivity  
{  
public function creating($model)  
{  
    $model->fill(['company_id' => Auth::user()->company_id])->save();  
}  
public function updating($model) {  
    $model->fill(['company_id' => Auth::user()->company_id])->save();  
}  

然后在我的新CompanyActivityLogs模型中

public static function boot() {  
 parent::boot();  
CompanyActivityLogs::observe(new CompanyActivity()); 
}

这没用,我认为这将是一个很好的解决方案。我尝试在observe语句中切换出ActivityActivityLogs for Activity(父模型),但是没有用。

我尝试将其添加到扩展模型

public static function boot()
 {
    parent::boot();
    static::creating(function($model)
    {

        $model->created_by = public static function boot()
 {
    parent::boot();
    static::creating(function($model)
    {         
        $model->created_by = Auth::user()->company_id;
        //also tried  $model->save(); here

    });      
};

最后,我尝试将其附加到parent :: array

protected $fillable = ['company_id'];  
public function toArray()  
{  
    $array = parent::toArray();  
    foreach ($this->getMutatedAttributes() as $key)  
    {  
        if ( ! array_key_exists($key, $array)) {  
            $array['company_id'] = Auth::user()->company_id;  
        }  
    } 
    return $array;  
}

我尝试了很多不同的方式,认为其中一个会有所帮助。

1 个答案:

答案 0 :(得分:0)

我添加模型时没有缓存配置。 BelongsToTenant适用于此问题。我敢打赌其他解决方案也会奏效。