【问题标题】:change primary key of sentry 2 user migration table更改哨兵2用户迁移表的主键
【发布时间】:2015-05-05 06:35:46
【问题描述】:

我已经尝试过这段代码并通过执行以下操作运行哨兵 2 附带的迁移: php artisan migrate:--package cartalyst/sentry. 我能够在我的数据库中创建用户、组和其他表。

如何将用户表的ID 列从PRIMARY KEY 更改为我作为迁移添加的userID

【问题讨论】:

  • 生成一个新的迁移,将 userID 添加到 users 表中,然后在列上设置 primary,这应该可以解决您的问题。
  • 但是它已经有'id'作为主键,所以它告诉我我不能有两个主键,设置另一个主键对参照完整性有什么影响?
  • 你想在哨兵用户表上将列“id”重命名为“userID”吗?

标签: php mysql laravel laravel-4 cartalyst-sentry


【解决方案1】:

试试看

使用php artisan migrate:make 生成新的迁移并编写以下代码

public function up() {
    Schema::table('users', function(Blueprint $table) {
        $table->dropPrimary('users_id_primary');
        $table->integer("userID");
        $table->primary('userID');
    });
}

public function down() {
    Schema::table('users', function(Blueprint $table) {
        $table->dropPrimary('userID');
        $table->dropColumn('userID');
        $table->primary('users_id_primary');

    });
}

然后运行php artisan migrate

下一步换你User模特

use Cartalyst\Sentry\Users\Eloquent\User as SentryUserModel;

class User extends SentryUserModel {

    protected $primaryKey = 'userID';
}

下一步

php artisan config:publish cartalyst/sentry

接下来打开app/config/packages/cartalyst/sentry中的配置文件并编辑

'users' => array(
 'model' => 'User',
 ...
 ),

希望对你有所帮助:)

【讨论】:

  • 这会影响引用中的任何内容吗?因为我认为不知何故,哨兵必须将主键“id”与某处左右的东西联系起来。我只是想确保将主键更改为另一列后,它不会引起任何问题..
  • 此更改会影响哨兵代码中使用 'id' 查询数据库的位置吗?
猜你喜欢
  • 1970-01-01
  • 2014-10-11
  • 1970-01-01
  • 2021-10-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多