В контроллере:
$entry = File::find($id);
// $entry->id возвращает 216
$entry->readFileInfo()
В модели:
class File extends Model
{
use HasFactory;
protected $table = 'files';
protected $fillable = [
'ticket_id',
'user_id',
'name',
'file',
];
protected $hidden = ['created_at', 'updated_at', 'deleted_at'];
/**
* @OA\Property(title="id",description="id",format="bigint20",example=1)
*/
protected ?int $id = null;
public function readFileInfo(): array
{
//$this->id возвращает null
}
}
Я даже прямо в аргументах функции readFileInfo передавал из контроллера объект $entry и внутри readFileInfo мне $entry->id возвращал null, хотя в контроллере возвращается число. Почему в контроллере все работает и есть доступ ко всем параметрам объекта, а в модели они все возвращают null, хотя если посмотреть что внутри объекта там все есть, в плане полученные из бд данные.
Только если сделать $file = $this->toArray() я получаю нужное число в $file['id']
===========UPDATE
По комментарию к задаче я понял что это из-за добавленных свойств в классе:
protected ?int $id = null;
Если это свойства убрать то все ок, но тогда вызовы в коде $this->id, $this->name подсвечиваются с сообщением "Property accessed via magic method" в шторме и самое обращение к этим переменным становится не явным, не распечатав объект становится не возможным для понимания какие вообще свойства есть объекта есть, это не удобно.
Как оставить свойства, но и чтобы работало обращение к ним внутри самой модели?