2017-04-03 33 views
0

我有一个模型与softdeletes,如果我添加一个附加字段我的sofdeletes实现不工作,有人知道发生了什么?

use Illuminate\Database\Eloquent\Model; 

use Illuminate\Database\Eloquent\SoftDeletes; 

class Users extends Model 
{ 
    use SoftDeletes; 

    protected $dates = ['deleted_at']; 

    protected $table = 'users'; 

    protected $appends = ['assigned']; 

    protected $fillable = ['category_id']; 

    public function __construct() 
    { 
     $this->assigned = false; 
    } 

    public function setAssignedAttribute($value) 
    { 
     $this->attributes['assigned'] = $value; 
    } 

    public function getAssignedAttribute($value) 
    { 
     return $value; 
    } 
} 
+0

在你的表中是否有'assigned'字段? –

+0

不,它是一个附加字段,这是文档https://laravel.com/docs/5.4/eloquent-serialization#appending-values-to-json – user1470098

回答

1

这不是你的附加字段。这是你的构造函数不调用父构造函数,这是启动你的软删除特性。将parent::__construct()添加到您的构造函数中。它应与家长的签名,以及因此它应该是:

public function __construct(array $attributes = []) 
{ 
    $this->assigned = false; 

    parent::__construct($attributes); 
} 
0

你误读的文档,你的访问没有正确的名称:

use Illuminate\Database\Eloquent\Model; 

use Illuminate\Database\Eloquent\SoftDeletes; 

class Users extends Model 
{ 
    use SoftDeletes; 

    protected $dates = ['deleted_at']; 

    protected $table = 'users'; 

    protected $appends = ['assigned']; 

    protected $fillable = ['category_id']; 

    public function __construct() 
    { 
     $this->assigned = false; 
    } 

    public function setIsAssignedAttribute($value) 
    { 
     $this->attributes['assigned'] = $value; 
    } 

    public function getIsAssignedAttribute($value) 
    { 
     return $value; 
    } 
} 

您需要甚至认为Is它不是变量名称的一部分。