Laravel - 完整性约束违规:1452 无法添加或更新子行:外键约束失败

2023-12-07

我目前正在通过个人项目学习 Laravel。

Context

在类似博客的应用程序中,我需要将文章链接到其作者。当我保存文章时,出现以下错误。

Error

SQLSTATE[23000]:违反完整性约束:1452 无法添加或更新子行:外键约束失败(parabolica-dev.articles, 约束articles_user_id_foreign外键(user_id) 参考users (id)) (SQL: 插入articles (title, content, excerpt, updated_at, created_at)值(rgergregerg、reggergregerg、regregregregreg、2020-04-29 09:55:12、2020-04-29 09:55:12))

Models

Article

class Article extends Model
{
    protected $fillable = ['title', 'content', 'excerpt', 'user_id'];

    public function user() {
        return $this->belongsTo('App\User');
    }
}

User

class User extends Authenticatable
{
    protected $fillable = [
        'name', 'email', 'password',
    ];

    public function article()
    {
        return $this->hasMany('App\Article');
    }
}

迁移

Users

class CreateUsersTable extends Migration
{
    public function up()
    {
        Schema::create('users', function (Blueprint $table) {
            $table->id();
            $table->string('name');
            $table->string('email')->unique();
            $table->timestamp('email_verified_at')->nullable();
            $table->string('password');
            $table->rememberToken();
            $table->timestamps();
        });
    }

    public function down()
    {
        Schema::dropIfExists('users');
    }
}

Articles

class CreateArticlesTable extends Migration
{
    public function up()
    {
        Schema::create('articles', function (Blueprint $table) {
            $table->id();
            $table->timestamps();
            $table->string('title');
            $table->text('excerpt');
            $table->text('content');
            $table->string('type');
            $table->string('status');

            // Relationship between article and user

            $table->bigInteger('user_id')->unsigned();
            $table->foreign('user_id')->references('id')->on('users');
        });
    }

    public function down()
    {
        Schema::dropIfExists('articles');
    }
}

控制器

文章控制器

class ArticleController extends Controller
{
    public function store(StoreArticle $request)
    {
        $validatedData = $request->validated();

        $user = Auth::user()->id;
        $article = Article::create($validatedData);
        $article->user_id = $user;
        $request->session()->flash('status', 'Article was created!');

        return redirect()->route('articles.show', ['article' => $article->id]);
    }
}

尝试过的解决方案

  • 将 user_id 添加到我的文章模型中的 $fillable 数组中,我仍然收到错误。
  • 在我的迁移中将 nullable() 方法添加到 user_id 中。保存文章时没有出现错误消息,但随后 user_id 在我的表中记录为 null。

根据我的发现,这些是 SO / LaravelCasts 中最受提议的 2 个解决方案。对我做错了什么有什么建议吗?

谢谢你帮助我!


The create方法创建并节省模型的一个新实例。由于该模型此时不包含用户 ID,因此失败。

你可以通过添加来解决这个问题user_id到模型的 fillables 数组中,并将用户 ID 添加到$validatedData创建模型之前的数组。

或者,您也可以使用以下命令创建模型的新实例new关键字,设置所有数据并在完成后显式保存:

$article = new Article($validatedData);
$article->user()->associate( Auth::user() );
$article->save();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Laravel - 完整性约束违规:1452 无法添加或更新子行:外键约束失败 的相关文章

  • 生成大随机数 php [重复]

    这个问题在这里已经有答案了 我想使用 PHP 生成一个包含 75 个字符的数字 我到处寻找 但一无所获 除了这个 http dailycoding com tools RandomNumber aspx http dailycoding c
  • 如何通过Elasticsearch模糊匹配电子邮件或电话?

    我想通过 Elasticsearch 对电子邮件或电话进行模糊匹配 例如 匹配所有以以下结尾的电子邮件 gmail com or 匹配所有电话开头136 我知道我可以使用通配符 query wildcard email gmail com
  • FPDI/FPDF:水印和打印多页

    我修改了这个堆栈问题 当用户尝试下载文件时在 pdf 文件上应用水印 https stackoverflow com questions 3983432 applying watermarks on pdf files when users
  • 如何在响应ajax codeigniter后停止执行其他控制器

    我想知道如何在响应输出 json 数据后停止执行函数和涉及的其他控制器 就我这里的情况而言 我只是打电话test 函数于dashboard控制器 In dashboard构造函数将执行MY Login library In MY Login
  • Woocommerce 让产品显示在存档页面中

    我正在尝试让所有产品显示在我商店的存档页面中 我想知道他们的id我正在使用我的一个钩子 它在 wp head 上运行并检查 if is product category 我想以某种方式访问 产品的查询并获取它们的 ID if is prod
  • 如何使用 php 发送服务器错误响应?

    一旦用户点击删除按钮我的 jQuery 脚本要求服务器删除所选项目 现在我想要我的php发送成功或错误响应的脚本 是否有可能触发错误回调万一该项目无法删除 Thanks 我的 jQuery 代码 ajax type post url myA
  • posts_search 中的自定义查询

    如何使用此查询作为我的自定义搜索查询 add filter posts search my search is perfect 20 2 function my search is perfect search wp query sWord
  • MySQL 与日语字符

    我试图弄清楚如何创建一个表 以便我可以在其中插入日语名字 现在我有 Type InnoDB Encoding UTF 8 Unicode utf8 Collation utf8 general ci 但是 当我插入字符时 它显示为 当我使用
  • SQL查询查找表的主键?

    我怎样才能找到哪一列首要的关键使用查询来创建表 这是重复的question https stackoverflow com questions 893874 mysql determine tables primary key dynami
  • 为什么我需要结束 ob_start()?

    php 文档建议我应该用 ob end flush 结束每个 ob start 我在网站的每个页面上使用一个 只是为了允许我在应用程序中的任何位置使用 firephp 日志方法 该应用程序运行良好 但我想知道是否有任何我不知道的东西可能有害
  • 使用 SSL 证书验证 Web 浏览器

    是否可以使用 ssl 证书对 Web 浏览器进行身份验证 假设我在应用程序中存储私钥 有什么方法可以从浏览器读取密钥并尝试基于该私钥进行身份验证 您可以使用 SSL TLS 客户端证书身份验证来对浏览器 用户进行身份验证 服务器必须请求客户
  • 在 android 中建立与 MySQL 的池连接

    我需要从我的 Android 应用程序访问 MySQL 数据库 现在所有的工作都通过 DriverManager getConnection url 等等 但我必须从多个线程访问数据库 所以我必须使用连接池 问题1 是 com mysql
  • Woocommerce 结账自定义选择字段

    我有以下功能 将选择列表添加到 woo commerce 结账表单中 woocommerce form field airport pickup array type gt select class gt array airport pic
  • 快速将列的副本添加到 MySQL 表

    我需要一种快速的方法来复制表中的 DATETIME 列并为其指定一个新名称 我的表中有一个名为 myDate 的列 名为 myResults 我需要一个查询来在名为 newDate 的表中创建一个新列 该列的数据与 myDate 列完全相同
  • SQL 最近日期

    我需要在 php 中获取诸如 2010 04 27 之类的日期作为字符串 并在表中找到最近的 5 个日期 表中的日期保存为日期类型 您可以使用DATEDIFF http dev mysql com doc refman 5 1 en dat
  • php 错误 fopen(): 文件名不能为空

    发送带有附件代码的电子邮件工作正常 最近我们已将文件传输到另一个托管服务器 idk 发生了什么 它显示以下错误 警告 fopen 第 106 行 home hugerecruitmetnt public html validatecva p
  • php,统计字符并删除超过140个字符的内容

    我需要一个 PHP 函数来计算短语的字符数 如果短语长度超过 140 个字符 则此函数应删除所有其他字符并在短语末尾添加三个点 例如我们有 message I am what I am and you are what you are et
  • 内部 while 循环不工作

    这是我项目网页上的代码片段 这里我想显示用户选择的类别 然后想显示属于该类别的主题 在那里 用户可以拥有多个类别 这没有问题 我可以在第一个 while 循环中打印所有这些类别 问题是当我尝试打印主题时 结果只显示一行 但每个类别中有更多主
  • ini_set 'session.gc_maxlifetime' 为 1 天

    If I do ini set session gc maxlifetime 86400 这是否意味着用户可以将浏览器留在同一页面 非活动状态 最多 1 天 而不必担心会话被垃圾收集并被注销 如果服务器配置不支持此功能会发生什么 它会给我一
  • 简单的 PHP 表单:电子邮件附件(代码 Golf)

    想象一下 一个用户想要在其网站上放置一个表单 该表单将允许网站访问者上传一个文件和一条简单的消息 该消息将立即通过电子邮件发送 即 该文件未存储在服务器上 或者如果该文件存储在服务器上 仅暂时 作为文件附件 并在邮件正文中添加注释 查看更多

随机推荐

  • React Native:如何将 require(path) 与动态 url 一起使用?

    我想使用WebView来显示一些html内容 这是一个例子 return
  • ORM / 如何处理Domain对象和Persistent对象的对应关系?

    在应用程序中 至少有两种方法来处理域对象持久性和 ORM 使用某种 ORM xml 或注释 将域对象直接映射到持久性 Making 关注点分离如果您的域和持久模型 表列 之间存在大量阻抗不匹配 这意味着 域对象与持久性无关 并且存在一些到某
  • 每次打开项目时 Xcode 都会意外退出

    打开 xcode 后 当我打开当前项目时 它会显示类似 xcode 意外退出 的警告 并有 3 个选项 忽略 报告 和 重新打开 当我单击 重新打开 时 它将打开 xcode 窗口 然后再次自动关闭并显示相同的警告 为什么会发生这种情况 如
  • 如何实现多线程并行执行多个任务?

    我是线程编程的新手 我必须在并行和后台运行一些任务 以便主 UI 执行线程保持对用户操作的响应 并等待每一项任务完成 然后再继续进一步执行 就像是 foreach MyTask t in myTasks t DoSomethinginBac
  • 操作按钮和observeEvent

    我想要一个按钮来触发对预先指定的非反应变量的操作x 每次按下按钮时x lt x 1应予执行 为了检查是否正确完成 应显示结果 为了实现这个我尝试过observeEvent 但它只做了一次它应该做的事情 它如何正常工作 看起来rv仅在以下范围
  • 将 Git 存储库发布到 SVN

    我和我的小团队使用 Git 工作 较大的团队使用 Subversion 我想安排一个 cron 作业来发布我们当前的存储库HEAD每小时进入 SVN 存储库中的某个目录 我以为我已经弄清楚了 但我之前写下的食谱现在似乎不起作用 git cl
  • NSSearchPathForDirectoriesInDomains 麻烦(掉头发快)

    我很快就秃顶了 需要帮助 我正在编写一个需要访问目录的应用程序 我希望得到一种形式的路径 用户 我 库 应用程序支持 iPhone模拟器 用户 应用程序 6958D21C C94B 4843 9EF1 70406D0CA3A3 文档 然而我
  • 如何在firebase中保存用户分数并在Android studio中实时检索

    我正在创建一个应用程序 其中单击按钮时点会增加 并且这些点应保存到 firebase 中 我设法将这些数据保存到 firebase 中 但是 当我销毁我的应用程序并再次打开它时 点值显示相同 但 在单击按钮后 又从0开始 例如 每次点击按钮
  • 如何使用numpy python计算元素向量的数量

    例如 如果我有 a np array 1 1 4 1 4 3 1 我们可以看到 数字 1 出现了四次 数字 4 出现了两次 只有 3 次 我想要得到以下结果 array 4 4 2 4 2 1 4 正如您所看到的 每个单元格都被其元素的计数
  • 当项目悬停时显示列表

    我有这个样本 link show hover list categories max height inherit opacity 1 list categories list style type none padding 0px mar
  • 了解 python 中嵌套 lambda 函数的行为

    我正在尝试学习纯函数式编程 但这段代码让我感到困惑 尤其是第二行 我不明白价值如何2被传递给变量x 有人可以解释一下这个嵌套吗lambda行为 gt gt gt square func lambda x x 2 gt gt gt funct
  • 任务generateMetadataFileForReleasePublication使用任务androidSourcesJar的此输出,而不声明显式或隐式依赖项

    以下命令无法发布我的 Android 库 gradlew my sdk publish stacktrace 这是我看到的错误 Reason Task my sdk generateMetadataFileForReleasePublica
  • 理解 __get__ 和 __set__ 以及 Python 描述符

    I am trying了解 Python 的描述符是什么以及它们的用途 我理解它们是如何工作的 但我有疑问 考虑以下代码 class Celsius object def init self value 0 0 self value flo
  • 防止箭头键转到上一个/下一个单元格

    在 Visual Studio Code 中使用 Jupyter 笔记本 使用 Microsoft 的 Python 扩展 时 是否可以配置应用程序以防止箭头键退出当前单元格 基本上 当我使用箭头键在可编辑单元格 代码或降价 内移动时 我不
  • 如何检测操作系统或设备类型等系统信息

    我想知道的最重要的事情是设备类型 操作系统版本 是否有硬件键盘 也许还有屏幕分辨率 但如果您知道其他有用的调试信息 请添加它们 我找到了操作系统版本 string OS Version System getProperty os versi
  • 可能出现意外的参考比较

    我有以下代码给出警告 可能出现意外的参考比较 要进行值比较 请将左侧转换为类型 string if lblStatus Content ACTIVE Do stuff else Do other Stuff 我假设警告是因为lblStatu
  • 由于 mscordbi.dll 版本错误,托管调试不再起作用

    我正在尝试使用 Visual Studio 进行托管调试内存转储 但失败并显示以下错误消息 托管调试对此小型转储不可用 无法找到托管小型转储调试所需的库 mscordbi dll 版本 4 0 30319 0 尝试以下任一步骤后重新启动调试
  • 编译 K&R 示例时出现问题

    我在编译本书第 5 11 节中提供的示例程序时遇到问题 我删除了大部分代码 只留下了相关的内容 define MAXLINES 5000 char lineptr MAXLINES void qsort1 void lineptr int
  • :target 伪选择器和选项卡

    所以我想创建一个仅使用 CSS 的选项卡系统 到目前为止我所拥有的有效 但我不知道如何使一个选项卡默认可见 选项卡 section class tabs ul li a href tab1 1 a li li a href tab2 2 a
  • Laravel - 完整性约束违规:1452 无法添加或更新子行:外键约束失败

    我目前正在通过个人项目学习 Laravel Context 在类似博客的应用程序中 我需要将文章链接到其作者 当我保存文章时 出现以下错误 Error SQLSTATE 23000 违反完整性约束 1452 无法添加或更新子行 外键约束失败