当前位置: 首页 > 知识库问答 >
问题:

自定义主密钥不工作laravel 5.4

濮阳奇逸
2023-03-14

使用Laravel 5.4.13,我有一个名为Widget的模型,我在其中设置主键如下:

protected $primaryKey = 'widget_id';

widgets表有一个主键列int,auto increment,名为:widget\u id。

但是,当我尝试在浏览器上更新记录时,我会出现以下错误:

Connection.php第647行中的QueryException:

SQLSTATE[42S22]:未找到列:1054“where子句”中的未知列“id”(SQL:选择count(*)作为来自widgetswherename=est eum和id

它仍然查找名为:id的列,而不是widget_id。

我发现这是在验证时发生的:

$this->validate($request, [
        'name' => 'required|string|max:40|unique:widgets,name,' .$widget->widget_id
    ]);

我错过了什么?

共有3个答案

锺离霖
2023-03-14

您实际上是如何添加这个新的小部件\u id?您对id字段做了什么?如果我理解得很清楚,你想删除id并用widget\u id替换它,对吗?

请记住,在同一个表中不能有两个自动增量字段,以此类推,如果你想正常工作,你想让widget_id成为人工智能。(但我不建议)

我建议删除id,并使用新的迁移添加widget_id。要创建迁移,请使用artisan命令:

php artisan make:migration alter_user

然后加上

public function up()
{
    Schema::table(User::TABLE, function(Blueprint $table)
    {
        $table->dropColumn('id');
    });
    Schema::table(User::TABLE, function(Blueprint $table)
    {
        $table->increments('widget_id');
    });
}

public function down()
{
    Schema::table(User::TABLE, function(Blueprint $table)
    {
        $table->dropColumn('widget_id');
    });
    Schema::table(User::TABLE, function(Blueprint $table)
    {
        $table->increments('id');
    });
}

注意:您不能将它们添加到同一个架构中。

然后添加protected$primaryKey='widget_id' 到您的模型。确保扩展illumb\Database\elount\Model

它为我的一个新的laravel 5.4安装工作,在用户表上进行修改。希望对你有帮助。

秦时铭
2023-03-14

试试这个:

$this->validate($request, [
    'name' => 'required|string|max:40|unique:widgets,name,' .$widget->widget_id.',widget_id'
]);
权胜泫
2023-03-14

这可能是一个已解决的问题,但我遇到了同样的问题,我希望根据我为解决该问题所采取的新方法作出贡献:

Laravel允许您使用以下命令指定要在关系模型中使用的foreignkey:

返回$this-

完成后,您就可以扩展模型并收回相关记录,而无需麻烦地指定唯一字段。

要检查更多关于这个跟随留档。

 类似资料:
  • 我正在尝试自定义AlertDialog按钮的强调色。但它并没有产生任何影响,它似乎是从系统中继承了颜色。这是我的风格/主题。 这是我试图构建警报对话框的代码。 编辑1: 我尝试了使用的方法,但它给出了相同的结果。 编辑2: 我还尝试更改对话框的重音颜色,但没有看到该颜色: 即使这样也不会改变按钮文本的颜色:(。

  • 我试图创建一个加密的实现,但Android网站中给出的示例适用于API 23及以上版本。具体来说,问题是使用以下代码创建主密钥:。 在当前版本的androidx Security('androidx.security: security-crypto: 1.1.0-alpha01')上,您可以从技术上为创建实现,除了上面的函数状态仅适用于API 23及以上版本。因此,如果我理解正确,我唯一缺少的就

  • 我正在尝试实现AES自定义密码加密,并希望了解下面的代码。 我不太理解为什么需要指定密钥大小256“pbekeyspec(password,salt,65536,256)”,而我已经使用了“pbkdf2withHMACSHA256”,它应该生成256位的SecretKey。 并且在使用我的密码+salt生成密钥之后,为什么我需要将它与SecretKeySpec作为AES算法关联起来。

  • 我已经搜索了前面所有的问题,在Vuetify的新版本中,自定义的主题和图标对我来说都不起作用了。 vuetify.js文件: main.js文件: navbar.vue文件:(使用) 由于我的自定义主题,navbar的颜色应该是黑色,但它仍然是vuetify默认的蓝色。请指教。

  • 我正在尝试使用自定义主ID在laravel中创建crud函数。创建、读取和删除都正常工作,但每当我尝试更新时,都会出现错误: SQLSTATE[42S22]:找不到列: 1054未知列'id'in'where子句'(SQL:选择计数(*)作为聚合从其中=about和 模型pages.php Controller pages.php 模型数据 我不确定为什么它会找到列id,因为我在模型中设置了pag

  • 问题内容: 我在Android应用中使用Cloud Firestore数据库,并且在集合中有不同的文档,例如:用户uid,餐厅的按键和菜谱编号。 我的数据库: 对于用户,我知道可以使用uid,但最好为我的餐厅使用Firestore推送的ID?这是约定还是为什么要使用? 我还尝试使用UUID类生成唯一键,但对我来说,更容易在食谱中仅使用数字。这是一个不好的方法吗? 任何帮助将不胜感激,谢谢! 问题答