Невозможно получить доступ к защищенной переменной в классе при объявлении переменной - PullRequest
0 голосов
/ 11 июля 2019

Я новичок в laravel / php и надеялся, что кто-нибудь сможет ответить на вопрос для меня.Когда я тогда использую asset-> setDescription, здесь все работает нормально, но как только я раскомментирую 'protected $ description', метод setDescription перестает работать.Кто-нибудь знает, почему это происходит?

<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Asset extends Model
{
    protected $fillable = [
        'type', 'title','origin',
    ];
    // protected $description;
    public function __construct($type, $title, $origin)
    {
        $this->setType($type);
        $this->setTitle($title);
        $this->setOrigin($origin);
    }
    // Setters
    public function setType($type){
        $this->type = $type;
    }
    public function setTitle($title)
    {
        $this->title = $title;
    }
    public function setOrigin($origin)
    {
        $this->origin = $origin;
    }
    public function setDescription($description)
    {
        $this->description = $description;
    }
}

$type = $request->input('type');
$title = $request->input('title');
$origin = $request->input('origin');

// Create new asset
$asset = new Asset($type, $title, $origin);
$asset->setDescription('test');

$asset->save();```

1 Ответ

0 голосов
/ 11 июля 2019

Eloquent не знает об этом защищаемом свойстве. Все атрибуты Eloquent Model поддерживаются через свойство attribute. Если вы хотите выполнить настройки значений таким способом, используйте свойство attribute в вашем методе setDescription:

public function setDescription($description)
{
    $this->attributes['description'] = $description;
}

См. мутаторы для получения дополнительной информации.

...