Model 扩展空间laravel activitylogs活动模型并添加新的可填充项
我正在开发Laravel 5.4应用程序,并尝试安装Spatial/Laravel activitylog v1.16旧版本,因为我不确定较新的v2.4.3是否能与5.4一起使用 我的问题是软件包说我可以使用软件包CausesActivity特性添加一个causer。我将其添加到公司模型中,因为每个模型都有一个Company_id属性,但这不起作用。 我有一家公司,有许多用户希望在创建日志时将公司id添加到表中。 我创建了一个companygactivity模型,该模型扩展了活动模型,并从包中将company_id列添加到Activity_log表中,并将新模型添加到配置文件中 然后我试着: 添加belongsToTenant Trait没有用Model 扩展空间laravel activitylogs活动模型并添加新的可填充项,model,laravel-5.4,Model,Laravel 5.4,我正在开发Laravel 5.4应用程序,并尝试安装Spatial/Laravel activitylog v1.16旧版本,因为我不确定较新的v2.4.3是否能与5.4一起使用 我的问题是软件包说我可以使用软件包CausesActivity特性添加一个causer。我将其添加到公司模型中,因为每个模型都有一个Company_id属性,但这不起作用。 我有一家公司,有许多用户希望在创建日志时将公司id添加到表中。 我创建了一个companygactivity模型,该模型扩展了活动模型,并从包中将
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并观察创建或保存以填充公司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();
}
那没用,我想这是个很好的解决办法。我在observe语句中尝试将CompanyActivityLogs切换为活动父模型,但没有成功
我试着在扩展模型中添加
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
});
};
最后,我尝试将其附加到父::数组
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;
}
我尝试了很多不同的方法,认为其中一种会有所帮助 添加模型时,我没有缓存配置。BelongsToTenant适用于此问题。我打赌其他解决方案也会奏效
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;
}