В задании, которое я обрабатываю, я извлекаю модель Eloquent в переменную. Я добавляю несколько ключей «несуществующих» (они не существуют в виде столбцов в базе данных), потому что я использую значения этих ключей во время обработки задания.
Это на самом деле прекрасно работает в задании сам по себе, но не в Черте, которую использует Работа. Ниже приведен пример того, что работает, а что нет.
Я получаю ошибку: ErrorException: Indirect modification of overloaded element of App\Models\ExampleModel has no effect in ExampleTrait.php:3
В файле: App\Jobs\ExampleJob
Use App\Models\ExampleModel;
Use App\Http\Traits\ExampleTrait;
Class ExampleJob implements ExampleTrait
{
use ExampleTrait;
$row = ExampleModel::findOrFail(1);
$row['non_existing_key'] = 'test'; // This works fine
$row = $this->functionInTrait($row);
}
Затем в ExampleTrait
trait ExampleTrait {
public function functionInTrait($row)
{
$row['another_non_existing_key'] = 'test_value'; // This throws the error
return $row;
}
}
В ExampleModel
class ExampleModel extends Model
{
protected $guarded = ['id']; // So that all fields are fillable
}
Обновление
Ошибка при написании вопроса. Выполнение этого в Черте фактически работает:
$row['another_non_existing_key'] = 'test_value';
Но это не так:
$row['non_existing_key1']['another_non_existing_key'] = 'test_value';