进/出更新考勤系统SQL Yii2

时间:2016-11-02 05:42:31

标签: php sql-server yii2 yii2-advanced-app time-and-attendance

我有这种情况如果单击按钮“In”,它将创建一个新的出勤记录。如果单击按钮“Out”,它将更新之前从新记录创建的记录。
对于这样的情况,它应该在SQL上使用查询,或在Yii本身上完成?
我到目前为止尝试过的,我可以为“In”Button创建新的记录。但是当我点击“Out”按钮时,记录没有更新,它创建了一个Null In Time的新记录。
这是表
的设计

id   empid    date       in     out   status   desc
1     20    2016-11-01  08:00           1       In

这是表格的设计 enter image description here

编辑:
这是我的“In”按钮

的控制器
public function actionIn()
{
   // $session->open();
   // $

    $model = new AttDetail();
    $idAbsen = Att::find()->where(['empID'=>Yii::$app->user->id])->one();
    $db = Yii::$app->getDb();
    $command = $db->createCommand('
        SELECT group_shift.In FROM group_shift JOIN att on group_shift.Id = att.IdGs WHERE att.empId = 1
    ');
    $In = $command->queryOne();      

    if ( $model->load( Yii::$app->request->post() ) && $model->save() ) 
    {
      return $this->redirect(['index', 'id' => $model->Id]);
    }
    else 
    {
        return $this->render('in', [
            'model' => $model,
            'in' => $in,
            'in' => $idAtt
        ]);
    }
}

这是我的索引

'toolbar'=> [
         ['content'=>   Html::a('<i class="glyphicon glyphicon-plus"></i> In', ['in'],['class'=>'btn btn-success']),

    ],
    ],
    'columns' => [
        ['class' => 'kartik\grid\SerialColumn'],
        'Id',
        'IdAtt',
        'Date',
        'In',
        'Out',

        ['class' => 'kartik\grid\ActionColumn',
        'template' =>  Html::a('<i class="glyphicon glyphicon-plus"></i> Out', ['out'],['class'=>'btn btn-success']),
          'dropdown'=>false,
          'dropdownOptions'=>['class'=>'pull-right'],

我愿意接受有关如何做到这一点的所有建议。谢谢你

1 个答案:

答案 0 :(得分:0)

您的模板应该是(假设您的模型ID为empid

'template' =>  Html::a('<i class="glyphicon glyphicon-plus"></i> Out', 
    Url::to(['your-controller/out', 'empid=> $model->empid]),['class'=>'btn btn-success']),

但没有行动代码

您应该为actionOut

添加适当的(更新)代码

像这样的更新事件(这只是一个建议)

public function actionOn($empid)
{
    $model = $this->findModel($empid);

    if ($model->load(Yii::$app->request->post()) && $model->save()) {
       ......
       // your redirec..
    } else {
        return $this->render('your_view', [
            ....
        ]);
    }
}