У меня есть пользовательская модель разворота с инкрементным идентификатором. Я настроил Обозреватель, и я получаю события для таких вещей, как attach
, updateExistingPivot
, et c. Однако объект, который передается в функции наблюдателя, не включает поле «id». Это выдает ошибку, когда я пытаюсь сохранить связанную модель в пользовательский сводный график (см. Модель аудита ниже).
class Audit extends Model
{
public function auditable()
{
return $this->morphTo();
}
}
class User extends Model
{
public function accounts()
{
return $this->belongsToMany('App\Models\Account')
->withPivot('id')
->using('App\Models\AccountUser');
}
}
class Account extends Model
{
public function users()
{
return $this->belongsToMany('App\Models\User')
->withPivot('id')
->using('App\Models\AccountUser');
}
}
class AccountUser extends Pivot
{
public $incrementing = true;
public function account()
{
return $this->belongsTo('App\Models\Account');
}
public function user()
{
return $this->belongsTo('App\Models\User');
}
public function audits()
{
return $this->morphMany('App\Models\Audit', 'auditable');
}
}
Если я выполняю $user->accounts()->updateExistingPivot($acct_id, ['description' => $description]);
, происходит событие обновления, но оно не содержится в id
:
(
[user_id] => 18000
[account_id] => 111389
[description] => My Description
)
Затем, если я пытаюсь сохранить новый Audit в пользовательский сводный блок, я получаю сообщение об ошибке, поскольку для оператора SQL нет auditable_id
:
public function updating(AccountUser $auditable)
{
$audit = new Audit();
...
$auditable->audits()->save($audit);
}
Генерирует
Integrity constraint violation: 1048 Column 'auditable_id' cannot be null (SQL: insert into `audits` (`auditable_id`, `auditable_type`, `updated_at`, `created_at`) values (?, App\\Models\\AccountUser, 2020-04-02 13:24:53, 2020-04-02 13:24:53))
Любая помощь будет оценена.