2017-04-03 6 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が必要変数名の一部ではありません。

関連する問題