аксессор не работает в laravel 5.5

У меня есть модель, в которой есть один аксессор

class Test extends Model
{
protected $fillable = [
'subject','date',
];public function getSubjectAttribute($value)
{
return ucfirst($value);
}
}

Когда я вызываю модель, аксессор не работает
Я прочитал все документы и Q&А, но …
Моя версия Laravel в 5.5

В модели у меня есть метод для получения данных

public function get_specific_subject($id){
$subject = DB::table("subjects")
->where("id", "=", $id)
->first();

return $subject;
}

И я вызываю этот метод в моем контроллере по нижеприведенному коду

    $subject = new Test();
$subject = $subject->get_specific_subject($subject_id);
dd($subject);

Результат дд:

    +"id": 5
+"subject": "testing subject"+"date": "2018-01-17"+"created_at": "2018-01-13 15:08:41"+"updated_at": "2018-01-13 15:08:41"

0

Решение

Вы используете DB для получения вашей записи, вместо этого сделайте это в вашем контроллере:

  $subject= Test::find($subjectId);
dd($subject);

и в вашей модели добавьте эту строку:

  protected $table = 'subjects';
public $primaryKey='id';
2

Другие решения

class Test extends Model
{
protected $table = 'subjects';
protected $fillable = [
'subject','date',
];

public function getSubjectAttribute($value)
{
return ucfirst($value);
}
}

И в контроллере

public function view($subjectId){
$subject = Test::find($subjectId);
dd($subject->toArray());
}
1

использование $subject->subject вместо.

0

Измените свой код следующим образом (используйте вашу модель):

public function get_specific_subject($id){
$subject = Subject::where("id", "=", $id)
->first();
return $subject;
}
0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector