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

Laravel自定义主键不工作在数据更新

吴弘壮
2023-03-14

我正在尝试使用自定义主ID在laravel中创建crud函数。创建、读取和删除都正常工作,但每当我尝试更新时,都会出现错误:

SQLSTATE[42S22]:找不到列: 1054未知列'id'in'where子句'(SQL:选择计数(*)作为聚合从页面其中段塞=about和id

模型pages.php

class Page extends Model{
use HasFactory;

protected $primaryKey = 'pages_id';

protected $fillable = [
    'is_default_home',
    'is_default_not_found',
    'title',
    'slug',
    'content',
];}

Controller pages.php

public function update()
{
    $this->validate(); 
    $this->unassignedDefaultHomePage(); 
    $this->unassignedDefaultNotFoundPage(); 
    Page::find($this->modelId)->update($this->modelData());
    $this->modalFormVisible = false;
    $this->reset();
}

模型数据

public function modelData()
{
    return [
        'title' => $this->title,
        'slug' => $this->slug,
        'content' => $this->content,
        'is_default_home' => $this->isSetToDefaultHomePage,
        'is_default_not_found' => $this->isSetToDefaultNotFoundPage,
    ];
}

我不确定为什么它会找到列id,因为我在模型中设置了pages_id。我正在使用phpMyAdmin(xampp)。谢谢你的帮助!

共有2个答案

燕经国
2023-03-14

这是来自Count查询的错误,而不是来自更新查询的错误。我想你需要检查其他功能。更新功能没问题。

艾谦
2023-03-14

检查您的数据库表COLUUN id不存在。在数据库中创建一个列。

class Page extends Model{
use HasFactory;

protected $primaryKey = 'pages_id';

protected $fillable = [
    'is_default_home',
    'is_default_not_found',
    'title',
    'slug',
    'content',
];}

在上述code中pages_id更喜欢表命名为列命名为id。检查这些

 类似资料:
  • 使用Laravel 5.4.13,我有一个名为Widget的模型,我在其中设置主键如下: widgets表有一个主键列int,auto increment,名为:widget\u id。 但是,当我尝试在浏览器上更新记录时,我会出现以下错误: Connection.php第647行中的QueryException: SQLSTATE[42S22]:未找到列:1054“where子句”中的未知列“i

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

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

  • 我有一个数据库结构,其中我有一个用户和公司之间的多对多关系表。为此,我有一个交叉引用表company_user。此外,每个用户在公司中都有一定的角色,因此交叉引用表也有role_id。问题是,由于某种原因,当我试图从交叉引用表中检索角色时,我会出现异常。 以下是我如何定义公司模型中的关系: 现在,如果我只是尝试从pivot获取角色id,一切都会正常工作: 但是我还需要角色的数据,所以我在自定义透视

  • 我创建了这个迁移脚本,但它给出了以下错误。若我将另一列的数据类型更改为字符串或其他内容,它不会给出任何错误。如何解决这个问题? SQLSTATE[42000]:语法错误或访问冲突: 1068多个主键定义(SQL:更改表添加主键()) SQLSTATE[42000]:语法错误或访问冲突: 1068定义了多个主键 编辑 因为没有工作,我将此用户id创建移动到另一个迁移脚本。现在它仍然无法运行第二个迁移

  • 我正在尝试发送电子邮件时,一个订单被移动到一个自定义状态在Woocommerce。我已经成功地创建了一个插件,它创建了一个自定义状态,订单被分配给自定义状态。 我还成功地在WooCommerce中的Settings->Emails下添加了一个自定义电子邮件模板,并编写了代码,当订单移动到自定义状态时,该代码应该发送电子邮件。 但是,代码不会被触发,电子邮件也不会被发送。 下面是我的代码。 在我编写