我想在我的 Yii2 应用程序中实现记录锁定功能。
如果一个用户打开更新链接/记录(例如http://localhost/myproject/backend/web/user/update/1
),那么另一个用户将无法访问此链接,用户将收到一条 ALERT
消息,内容为“此记录已被其他用户打开”。所以记录/页面应该为另一个用户锁定。 (与 MS Excel 锁定相同)
一旦第一个用户完成并离开该记录/页面,它应该解锁,另一个用户可以读取/更新该数据。
那么我如何在 Yii2 事件记录中使用 mysql 数据库锁定机制或者是否有任何其他方法来实现这一点。
如有任何帮助,我们将不胜感激。
最佳答案
它称为乐观锁定并在 official docs 中描述。 .下面是一个实现示例:
// ------ view code -------
use yii\helpers\Html;
// ...other input fields
echo Html::activeHiddenInput($model, 'version');
// ------ controller code -------
use yii\db\StaleObjectException;
public function actionUpdate($id)
{
$model = $this->findModel($id);
try {
if ($model->load(Yii::$app->request->post()) && $model->save()) {
return $this->redirect(['view', 'id' => $model->id]);
} else {
return $this->render('update', [
'model' => $model,
]);
}
} catch (StaleObjectException $e) {
// logic to resolve the conflict
}
}
关于php - Yii2中如何实现mysql记录锁定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31269160/