У меня есть такие случаи, если кнопка «В» нажата, она создаст новую запись для посещаемости. И если кнопка «Вне» нажата, она обновит запись, созданную из новой записи ранее.
для подобных случаев это должно быть сделано на SQL с использованием запроса или на самом Yii?
что я пробовал до сих пор, я могу создать новую запись для кнопки «В». Но когда я нажал кнопку «Вне», запись не была обновлена, она создала новую запись с Null In Time.
вот дизайн стола
id empid date in out status desc
1 20 2016-11-01 08:00 1 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'],
Я открыт для всех предложений о том, как это можно сделать. Спасибо
Ваш шаблон должен быть (при условии, что идентификатор вашей модели 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', [
....
]);
}
}
Других решений пока нет …