访问者不在laravel 5.5中工作

时间:2018-01-17 11:13:57

标签: php laravel laravel-5.5 accessor

我有一个模型,里面有一个访问者

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


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

当我呼叫模型时,访问器不起作用 我阅读了所有文件和Q& A,但...... 我在5.5的Laravel版本

在模型中,我有一个获取数据的方法

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);

dd结果是:

    +"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"

4 个答案:

答案 0 :(得分:2)

您正在使用数据库来获取记录,而是在您的控制器中执行此操作:

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

并在您的模型中添加以下行:

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

答案 1 :(得分:1)

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());
}

答案 2 :(得分:0)

改为使用$subject->subject

答案 3 :(得分:0)

像这样更改你的代码(使用你的模型):

public function get_specific_subject($id){
    $subject = Subject::where("id", "=", $id)
        ->first();
    return $subject;
}