Oleh: Hafid Mukhlasin
Misal kita punya tabel activity (id, name, created_at [datetime], created_by, update_at[datetime], update_by) maka field created_at, created_by, update_at, update_by bisa diisi otomatis oleh aplikasi kita. Dua behaviours ini yang akan membantu kita.
use yii\behaviors\TimestampBehavior;
use yii\behaviors\BlameableBehavior;
Pada models, tambahakn function behaviours.
public function behaviors(){
return [
'timestamp' => [
'class' => TimestampBehavior::className(),
'attributes' => [
ActiveRecord::EVENT_BEFORE_INSERT => ['created','updated'],
ActiveRecord::EVENT_BEFORE_UPDATE => 'updated',
],
'value' => new Expression('NOW()'),
],
'blameable' => [
'class' => BlameableBehavior::className(),
'attributes' => [
ActiveRecord::EVENT_BEFORE_INSERT => ['created_by','updated_by'],
ActiveRecord::EVENT_BEFORE_UPDATE => 'updated_by',
],],];
}
Lalu pastikan pada models function rules, ke empat field tersebut tidak masuk dalam required.
public function rules()
{
return [
[['name'], 'required'],
...
}
Empat buat field yaitu field created_at, created_by, update_at, update_by tidak perlu diinputkan karena sudah otomatis input dari sistem jadi tidak memerlukan validasi.
Banyak orang yang mengalami permasalahan yaitu mengira kode yang dituliskan sudah benar tetapi ketika proses penyimpanan gagal. Solusinya anda dapat menampilkan kesalahan atau error ketika proses menyimpan, berikut contoh kode:
if($model->save()) {
Yii::$app->getSession()->setFlash('success', 'Data have updated.');
}
else{
$error = implode(', ',$model->errors);
Yii::$app->getSession()->setFlash('error', 'Data is not updated. Because '.$error);
}
Selamat berkreasi.
0 komentar:
Post a Comment