M240627092257QimallRbacAuthItemUpdate.php 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. <?php
  2. namespace app\migrations;
  3. use yii\db\Migration;
  4. use Yii;
  5. /**
  6. * Class M240627092257QimallRbacAuthItemUpdate
  7. */
  8. class M240627092257QimallRbacAuthItemUpdate extends Migration
  9. {
  10. /**
  11. * {@inheritdoc}
  12. */
  13. public function safeUp()
  14. {
  15. try {
  16. // 将 id=2823 的记录中的 name 更新为 mall/setting
  17. $sql1 = <<<SQL
  18. UPDATE qimall_rbac_auth_item
  19. SET name = 'mall/setting'
  20. WHERE id = 2823;
  21. SQL;
  22. Yii::$app->db->createCommand($sql1)->execute();
  23. // 将 name=mall/setting/memory 的记录的 pid 更新为 2823
  24. $sql2 = <<<SQL
  25. UPDATE qimall_rbac_auth_item
  26. SET pid = 2823
  27. WHERE name = 'mall/setting/memory';
  28. SQL;
  29. Yii::$app->db->createCommand($sql2)->execute();
  30. // 查找第二个 name=mall/setting 的记录的 id
  31. $sql3 = <<<SQL
  32. SELECT id
  33. FROM qimall_rbac_auth_item
  34. WHERE name = 'mall/setting'
  35. ORDER BY id ASC
  36. LIMIT 1 OFFSET 1;
  37. SQL;
  38. $secondRecordId = Yii::$app->db->createCommand($sql3)->queryScalar();
  39. // 如果找到了第二个记录,则更新其 status 为 -1
  40. if ($secondRecordId !== false) {
  41. $sql4 = <<<SQL
  42. UPDATE qimall_rbac_auth_item
  43. SET status = -1
  44. WHERE id = :id;
  45. SQL;
  46. Yii::$app->db->createCommand($sql4)->bindValue(':id', $secondRecordId)->execute();
  47. }
  48. } catch (\Exception $e) {
  49. \Yii::error('更新权限菜单错误了:' . $e->getMessage());
  50. }
  51. }
  52. /**
  53. * {@inheritdoc}
  54. */
  55. public function safeDown()
  56. {
  57. echo "M240627092257QimallRbacAuthItemUpdate cannot be reverted.\n";
  58. return false;
  59. }
  60. /*
  61. // Use up()/down() to run migration code without a transaction.
  62. public function up()
  63. {
  64. }
  65. public function down()
  66. {
  67. echo "M240627092257QimallRbacAuthItemUpdate cannot be reverted.\n";
  68. return false;
  69. }
  70. */
  71. }