Laravel 8-由于违反完整性约束,可以删除但不能更新父行:外键约束失败

穆菲达·祖赫拉(Mufida zuhra)

我有一个卡车桌,一个包裹桌和一个邮递员桌。卡车表和包裹表具有一对多的关系。卡车表和邮递员表具有一对一的关系。

现在我可以删除卡车表了,但是当我尝试更新 postman_name分配了包裹的卡车数据时,我在卡车表中遇到了违反完整性约束的错误当我尝试更改其他非外键属性或尝试更改postman_name当前分配了零包装的卡车数据时,我没有收到错误消息

当我尝试,我只得到了错误的更新 postman_nametruck_number与分配给它的包。

如何解决此错误?

里面的邮递员表格truck/edit.blade.php

<div class="form-group">
                <label for="postman_name">Postman in Charge</label>
                <select name="truck_number" class="form-control">
                <option selected disabled>-</option>
                @foreach ($postmen as $count => $postman)
                  <option value="{{$postman['postman_name']}}">{{$postman['postman_name']}}</option>
                @endforeach
                </select>
</div>

卡车更新控制器:

public function update(Request $request, $truck_id)
    {
        $request->validate([
            'truck_number'=>'required|unique:trucks,truck_id',
            'postman_name',
            'date_of_operation'=>'required'
        ]);
        $trucks = Truck::find($truck_id);
        $trucks->truck_number =  $request->get('truck_number');
        $trucks->postman_name = $request->get('postman_name');
        $trucks->date_of_operation = $request->get('date_of_operation');
        $trucks->save();
        return redirect(TRUCK)->with('success', 'Truck Updated!');
    }

包迁移文件:

Schema::create('packages', function (Blueprint $table) {
            $table->increments('package_id');
            $table->string('truck_number')->nullable(); 
            $table->foreign('truck_number')->references('truck_number')->on('trucks')->onDelete('cascade');
            $table->string('package_number')->unique();
            $table->string('receiver_name');
            $table->string('destination');
            $table->timestamps();
        });

邮递员迁移文件:

Schema::create('postmen', function (Blueprint $table) {
            $table->increments('postman_id');
            $table->string('truck_number')->nullable();
            $table->foreign('truck_number')->references('truck_number')->on('trucks')->onDelete('cascade');
            $table->string('postman_number')->unique();
            $table->string('postman_name');
            $table->timestamps();
        });

卡车迁移文件:

Schema::create('trucks', function (Blueprint $table) {
            $table->increments('truck_id');
            $table->string('truck_number')->unique();
            $table->string('postman_name')->nullable();
            $table->date('date_of_operation');
            $table->timestamps();
        });

楷模:

class postman extends Model
{

    use HasFactory;
    protected $primaryKey = 'postman_id';

    protected $fillable = ['truck_number','postman_number','postman_name'];

    public function Truck(){
        return $this->belongsTo(Truck::class);
    }
}

class Package extends Model
{
    use HasFactory;
    protected $primaryKey = 'package_id';

    protected $fillable = ['truck_number', 'package_number', 'receiver_name', 'destination'];
    
     public function Truck(){
        return $this->belongsTo(Truck::class);
    }

}

class Truck extends Model
{
    use HasFactory;
    protected $primaryKey = 'truck_id';
    protected $fillable = ['truck_number', 'postman_name', 'date_of_operation', 'status'];
    
     public function Package()
    {
        return $this->hasMany(Package::class, 'truck_number', 'truck_number');
    }

     public function postman()
    {
        return $this->hasOne(postman::class, 'truck_number', 'truck_number');
    }

}

注意:顺便说一句,我也不能添加$table->foreign('postman_name')->references('postman_name')->on('postmen')->onDelete('cascade');到卡车迁移文件。我这样做时会引发此错误:

SQLSTATE [HY000]:常规错误:1005无法创建表proj_dbtrucks(错误号:150“外键约束格式不正确”)

阿扎福·科萨

您需要将postman_name更改为邮递员表上的唯一表:

$table->string('postman_name')->unique();

在卡车模型中,您需要指定外键名称和本地键名称,如下所示:

return $this->hasOne(postman::class, 'postman_name','postman_name');

更改邮递员模型中的关系

public function truck(){
    return $this->belongsTo(Track::class, 'postman_name', 'postman_name');
}

在卡车模型中

public function postman(){
    return $this->hasOne(Postman::class, 'postman_name', 'postman_name');
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

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

来自分类Dev

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

来自分类Dev

SQLSTATE [23000]:违反完整性约束:1452无法添加或更新子行:外键约束失败-Laravel

来自分类Dev

Laravel 6-SQLSTATE [23000]:违反完整性约束:1452无法添加或更新子行:外键约束失败

来自分类Dev

SQLSTATE [23000]:违反完整性约束:1452无法添加或更新子行:外键约束失败-Laravel

来自分类Dev

SQLSTATE [23000]:违反完整性约束:1452无法添加或更新子行:外键约束失败-Laravel

来自分类Dev

Laravel - SQLSTATE[23000]:违反完整性约束:1452 无法添加或更新子行:外键约束失败

来自分类Dev

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

来自分类Dev

Laravel:SQLSTATE[23000]:违反完整性约束:1452 无法添加或更新子行:外键约束失败

来自分类Dev

Laravel 5:SQLSTATE [23000]:违反完整性约束,外键约束失败

来自分类Dev

Laravel:违反完整性约束

来自分类Dev

违反完整性约束:1452 laravel

来自分类Dev

违反完整性约束:1452 laravel

来自分类Dev

Laravel SQLSTATE [23000]:违反完整性约束:1452无法添加或更新子行

来自分类Dev

Laravel SQLSTATE [23000]:违反完整性约束:1452无法添加或更新子行

来自分类Dev

SQLSTATE[23000]:违反完整性约束:1452 无法添加或更新子行 (laravel5)

来自分类Dev

完整性约束违规:1451 无法删除或更新父行:外键约束失败

来自分类Dev

Laravel 5:SQLSTATE [23000]:违反完整性约束

来自分类Dev

Laravel验证器-违反完整性约束

来自分类Dev

Laravel-违反完整性约束:1062复制条目

来自分类Dev

Laravel验证器-违反完整性约束

来自分类Dev

Laravel - 违反完整性约束:1062 重复条目

来自分类Dev

Laravel aimeos - 违反完整性约束问题

来自分类Dev

违反完整性约束,外键约束失败

来自分类Dev

SQLSTATE [23000]:违反完整性约束:1452无法添加或更新子行:外键约束失败

来自分类Dev

SQLSTATE [23000]:违反完整性约束:1452无法添加或更新子行:外键约束失败

来自分类Dev

SQLSTATE [23000]:违反完整性约束:1452无法添加或更新子行:外键约束失败

来自分类Dev

SQLSTATE [23000]:违反完整性约束:1452无法添加或更新子行:外键约束失败

来自分类Dev

SQLSTATE [23000]:违反完整性约束:1452无法添加或更新子行:外键约束失败

Related 相关文章

  1. 1

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

  2. 2

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

  3. 3

    SQLSTATE [23000]:违反完整性约束:1452无法添加或更新子行:外键约束失败-Laravel

  4. 4

    Laravel 6-SQLSTATE [23000]:违反完整性约束:1452无法添加或更新子行:外键约束失败

  5. 5

    SQLSTATE [23000]:违反完整性约束:1452无法添加或更新子行:外键约束失败-Laravel

  6. 6

    SQLSTATE [23000]:违反完整性约束:1452无法添加或更新子行:外键约束失败-Laravel

  7. 7

    Laravel - SQLSTATE[23000]:违反完整性约束:1452 无法添加或更新子行:外键约束失败

  8. 8

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

  9. 9

    Laravel:SQLSTATE[23000]:违反完整性约束:1452 无法添加或更新子行:外键约束失败

  10. 10

    Laravel 5:SQLSTATE [23000]:违反完整性约束,外键约束失败

  11. 11

    Laravel:违反完整性约束

  12. 12

    违反完整性约束:1452 laravel

  13. 13

    违反完整性约束:1452 laravel

  14. 14

    Laravel SQLSTATE [23000]:违反完整性约束:1452无法添加或更新子行

  15. 15

    Laravel SQLSTATE [23000]:违反完整性约束:1452无法添加或更新子行

  16. 16

    SQLSTATE[23000]:违反完整性约束:1452 无法添加或更新子行 (laravel5)

  17. 17

    完整性约束违规:1451 无法删除或更新父行:外键约束失败

  18. 18

    Laravel 5:SQLSTATE [23000]:违反完整性约束

  19. 19

    Laravel验证器-违反完整性约束

  20. 20

    Laravel-违反完整性约束:1062复制条目

  21. 21

    Laravel验证器-违反完整性约束

  22. 22

    Laravel - 违反完整性约束:1062 重复条目

  23. 23

    Laravel aimeos - 违反完整性约束问题

  24. 24

    违反完整性约束,外键约束失败

  25. 25

    SQLSTATE [23000]:违反完整性约束:1452无法添加或更新子行:外键约束失败

  26. 26

    SQLSTATE [23000]:违反完整性约束:1452无法添加或更新子行:外键约束失败

  27. 27

    SQLSTATE [23000]:违反完整性约束:1452无法添加或更新子行:外键约束失败

  28. 28

    SQLSTATE [23000]:违反完整性约束:1452无法添加或更新子行:外键约束失败

  29. 29

    SQLSTATE [23000]:违反完整性约束:1452无法添加或更新子行:外键约束失败

热门标签

归档