0

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

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

这就是表格的设计
在此处输入图像描述

编辑:
这是我的“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'],

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

4

1 回答 1

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', [
            ....
        ]);
    }
}
于 2016-11-02T08:08:48.830 回答