2017-08-22 7 views
-1

私は、ユーザーのリソースを非アクティブ化する1つのアクションを持っています。このアクションはビット値を使用してリソースを有効/無効にしますが、予想通りビット値を設定できなかったことに驚きました。値は常にリソースが作成されるときのデフォルト値である "1"に設定されます。LaravelのEloquentでmysqlビットのデータ型を設定するには? (Laravel 5.4)

私は問題が私のモデルであり、私はデータベースの最初のアプローチを使用していますし、問題は、私が作成したモデルである可能性があるとは思わないにもかかわらず
public function deactivate(Request $request) 

     { 

      $resourceId= $request->get('resourceId'); 

      $resource= \App\Resource::find($resourceId); 

      //I've tried the two statements below separetely 

      $resource->active= false; //didn't work 

      $resource->active= 0; //didn't work 

      //I performed the test below with another column and it worked 
      //so the problem isn't my model. 

      $resource->anotherProperty = 10; 



      $resource->save(); 
    } 

。研究後

CREATE TABLE `resource` (
`resource_id` int(10) unsigned NOT NULL AUTO_INCREMENT, 
`announcer_id` int(10) unsigned NOT NULL, 
`announcer_type` tinyint(3) unsigned NOT NULL, 
`data` date DEFAULT NULL, 
`active` bit(1) DEFAULT b'1', 
    PRIMARY KEY (`resource_id`) 
) ENGINE=InnoDB AUTO_INCREMENT=583 DEFAULT CHARSET=latin1; 
+0

ショーテーブルスキーマに

alter table resource modify column active boolean not null; 

今、私のテーブルに変更しました –

答えて

0

後数分更新

class Resource extends Model 
{ 



protected $table = 'resource'; 
    protected $primaryKey = 'resource_id'; 

protected $fillable = array('announcer_id', 'announcer_type', 'data', 'active'); 

    public $timestamps = false; 
    protected $connection = 'custom_connection'; 
} 

私はMySQLはTINYINT(1)として記憶されるブールデータ型を有することを見出しました。

私は私のコントローラ

$resource->active= false; //works 
関連する問題