У меня есть модель, в которой есть один аксессор
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"
Вы используете DB для получения вашей записи, вместо этого сделайте это в вашем контроллере:
$subject= Test::find($subjectId);
dd($subject);
и в вашей модели добавьте эту строку:
protected $table = 'subjects';
public $primaryKey='id';
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());
}
использование $subject->subject
вместо.
Измените свой код следующим образом (используйте вашу модель):
public function get_specific_subject($id){
$subject = Subject::where("id", "=", $id)
->first();
return $subject;
}