Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 防止外键错误MySQL_Php_Mysql_Laravel 5.3 - Fatal编程技术网

Php 防止外键错误MySQL

Php 防止外键错误MySQL,php,mysql,laravel-5.3,Php,Mysql,Laravel 5.3,我有一个数组,当我试图在数据库上使用INSERT时,我得到一个外键错误。但是检查它是哪一项有点困难,因为数组最多可以插入15000项。所以我创造了一些非常肮脏的东西: foreach ($items as $index => $item) { try { // $items = ['id' => 1, 'category_id' => 2, 'product_id' => 3] ProductCategoryPivot::inse

我有一个数组,当我试图在数据库上使用INSERT时,我得到一个外键错误。但是检查它是哪一项有点困难,因为数组最多可以插入15000项。所以我创造了一些非常肮脏的东西:

foreach ($items as $index => $item) {
    try {
        // $items = ['id' => 1, 'category_id' => 2, 'product_id' => 3]

        ProductCategoryPivot::insert( $item );
    } catch( \Exception $e ) {

    }
}

有没有更好的方法来处理这个问题?如果API返回15K个条目,我将执行15K个查询,这是一个很大的问题。

您可能会对真正的问题感兴趣,可能是您正在将数据插入到一个没有父值的子表中。是的,这就是问题所在,我需要这些值,这就是为什么我试着抓住它:SDo a
SELECT fk FROM child LEFT JOIN parent on。。。如果paretn.id为NULL
要查找缺少的VAL,您可以先查询数据库以获取不存在的id,例如
类别::whereNotIn(“id”,数组列($items,“Category\u id”))
或类似的内容,在插入之前,请检查类别是否存在。此错误基本上是指当关系中没有父行时,您试图插入子行。因此,您必须在尝试插入之前检查父级是否存在,或者在Catch块中检查此特定错误,如果是错误,则继续循环。可能值得报告丢失的父行的键。您可能对真正的问题感兴趣,可能是您正在将数据插入到没有父值的子表中。是的,这就是问题所在,我需要这些值,这就是为什么我尝试并抓住它的原因:SDo a
从子表中选择fk左连接父表on。。。如果paretn.id为NULL
要查找缺少的VAL,您可以先查询数据库以获取不存在的id,例如
类别::whereNotIn(“id”,数组列($items,“Category\u id”))
或类似的内容,在插入之前,请检查类别是否存在。此错误基本上是指当关系中没有父行时,您试图插入子行。因此,您必须在尝试插入之前检查父级是否存在,或者在Catch块中检查此特定错误,如果是错误,则继续循环。可能也值得报告缺少父行的键