Я пытаюсь реализовать черту RecordsActivity
, как в примере с Birdboard на Laracasts. Вот код Джеффри , обновленный для Laravel> = 5.7:
/**
* Fetch the changes to the model.
*
* @return array|null
*/
protected function activityChanges()
{
if ($this->wasChanged()) {
// weirdness here, see below
dump(
$this->oldAttributes,
$this->getAttributes(),
array_diff($this->oldAttributes, $this->getAttributes())
);
return [
'before' => Arr::except(array_diff($this->oldAttributes, $this->getAttributes()), 'updated_at'),
'after' => Arr::except($this->getChanges(), 'updated_at')
];
}
}
Приведенный выше dump()
дает следующий ответ во время теста (без аннотаций). Ничего не меняется между двумя массивами, и очевидно, что одна строка отличается, но почему-то array_diff не работает.
// $this->oldAttributes
array:14 [
"name" => "890 Gleichner Lights Suite 446"
"address" => "890 Gleichner Lights Suite 446"
"city" => "Mantetown"
"state" => "CT"
"postal_code" => "00627"
"active" => false
]
// $this->getAttributes()
array:14 [
"name" => "890 Gleichner Lights Suite 446"
"address" => "Changed"
"city" => "Mantetown"
"state" => "CT"
"postal_code" => "00627"
"active" => false
]
// array_diff($this->oldAttributes, $this->getAttributes())
[]