我正在使用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;
}
我尝试了很多不同的方式,认为其中一个会有所帮助。
答案 0 :(得分:0)
我添加模型时没有缓存配置。 BelongsToTenant适用于此问题。我敢打赌其他解决方案也会奏效。