无法添加或更新子行:外键约束失败我的 Laravel 8 项目中的 SQL 错误

问题描述

Illuminate\Database\QueryException sqlSTATE[23000]:完整性约束违规:1452 无法添加或更新子行:外键约束失败 (pride-express.travel_planes,CONSTRAINT travel_planes_circuit_id_foreign FOREIGN KEY (circuit_id ) REFERENCES circuits (id) ON DELETE CASCADE ON UPDATE CASCADE) (sql: insert into travel_planes (car_id,user_id,title,is_reservation_open,departure_time,updated_at,created_at) 值 (1,1,Roles,2021-06-10 07:02:00,2021-06-10 04:06:39,2021-06-10 04:06:39))

这是我的电路表迁移:

Schema::create('circuits',function (Blueprint $table) {
        $table->id();
        $table->string('circuit_slug')->unique();
        $table->string('departure');
        $table->string('destination');
        $table->timestamps();
    });

电路模型:

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Circuit extends Model
{
    use HasFactory;


    /**
    * Get the .. that owns the comment.
    */
   public function travelPlane()
   {
       return $this->hasMany(TravelPlane::class);
   }
}

Circuit table Print Screen

以下是我的 travel_planes 迁移表:

Schema::disableForeignKeyConstraints();
    Schema::create('travel_planes',function (Blueprint $table) {
        $table->id();
        $table->string('title')->unique();
        $table->string('slug')->unique();
        $table->unsignedBigInteger('car_id');
        $table->foreign('car_id')
        ->references('id')
        ->on('cars')
        ->onDelete('cascade')
        ->onUpdate('cascade');

        $table->unsignedBigInteger('circuit_id');
        $table->foreign('circuit_id')
        ->references('id')
        ->on('circuits')
        ->onDelete('cascade')
        ->onUpdate('cascade');
        $table->timestamp('departure_time');
        $table->unsignedBigInteger('user_id');
        $table->foreign('user_id')
            ->references('id')
            ->on('users')
            ->onDelete('cascade')
            ->onUpdate('cascade');
        $table->boolean('is_reservation_open')->default(true);
        $table->timestamps();

    });

TravelPlanes 模型:

<?PHP

namespace App\Models;

use Illuminate\Support\Facades\Auth;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Factories\HasFactory;

class TravelPlane extends Model{
use HasFactory;


   /**
   * Get the Trajectory for the travel.
   */
    public function circuit()
    {
        return $this->belongsTo(Circuit::class);
    }


 }

Travel planes Print screen

注意:Travel planes 表中的数据是由 faker 生成的。

当我尝试使用 voyager 管理面板在我的 travel_plane 表中添加新行时发​​生此错误。 有什么帮助吗?

解决方法

这个错误来自 travel_plane 表,女巫有一个外键,你试图插入一个值女巫在父表中不可用。

,

我已经解决了我的问题。这是什么问题:

在我的 travel_plane BREAD 创作者中,我应该检查 addedit 部分的默认列名和voyager 建立的关系。

在这两个打印屏幕上看到我的意思。

print screen for the default table column print screen for the relationship column