php - Laravel 使用可为空的外键违反完整性约束

标签 php mysql laravel eloquent laravel-5

我使用 Laravel 和 Eloquent 进行数据库访问。我有一张带有外键的表,其标签为空。当我直接在数据库中插入没有外键值的实体时,它工作正常,但如果我想使用 laravel 插入元素,我会收到以下错误。

SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or   
update a child row: a foreign key constraint fails (`gpb-lvw`.`regale`,
CONSTRAINT `regale_kunden_id_foreign` FOREIGN KEY (`kunden_id`) 
REFERENCES `kunden` (`id`)) (SQL: update `regale` set `bezeichnung` = 
xxxw, `updated_at` = 2015-07-20 10:28:17, `kunden_id` = where `id` = 4)


in Connection.php line 631
at Connection->runQueryCallback('update `regale` set `bezeichnung` = ?, `updated_at` = ?, `kunden_id` = ? where `id` = ?', array('xxxw', '2015-07-20 10:28:17', '', '4'), object(Closure)) in Connection.php line 591
at Connection->run('update `regale` set `bezeichnung` = ?, `updated_at` = ?, `kunden_id` = ? where `id` = ?', array('xxxw', '2015-07-20 10:28:17', '', '4'), object(Closure)) in Connection.php line 406
at Connection->affectingStatement('update `regale` set `bezeichnung` = ?, `updated_at` = ?, `kunden_id` = ? where `id` = ?', array('xxxw', '2015-07-20 10:28:17', '', '4')) in Connection.php line 349
at Connection->update('update `regale` set `bezeichnung` = ?, `updated_at` = ?, `kunden_id` = ? where `id` = ?', array('xxxw', '2015-07-20 10:28:17', '', '4')) in Builder.php line 1741
at Builder->update(array('bezeichnung' => 'xxxw', 'updated_at' => '2015-07-20 10:28:17', 'kunden_id' => '')) in Builder.php line 313
at Builder->update(array('bezeichnung' => 'xxxw', 'updated_at' => '2015-07-20 10:28:17', 'kunden_id' => '')) in Model.php line 1520
at Model->performUpdate(object(Builder), array()) in Model.php line 1454
at Model->save() in Model.php line 1402
at Model->update() in RegalController.php line 111
at RegalController->update('4')
at call_user_func_array(array(object(RegalController), 'update'), array('regale' => '4')) in Controller.php line 256
at Controller->callAction('update', array('regale' => '4')) in ControllerDispatcher.php line 164
at ControllerDispatcher->call(object(RegalController), object(Route), 'update') in ControllerDispatcher.php line 112
at ControllerDispatcher->Illuminate\Routing\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 139
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 103
at Pipeline->then(object(Closure)) in ControllerDispatcher.php line 114
at ControllerDispatcher->callWithinStack(object(RegalController), object(Route), object(Request), 'update') in ControllerDispatcher.php line 69
at ControllerDispatcher->dispatch(object(Route), object(Request), 'App\Http\Controllers\RegalController', 'update') in Route.php line 201
at Route->runWithCustomDispatcher(object(Request)) in Route.php line 134
at Route->run(object(Request)) in Router.php line 704
at Router->Illuminate\Routing\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 139
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 103
at Pipeline->then(object(Closure)) in Router.php line 706
at Router->runRouteWithinStack(object(Route), object(Request)) in Router.php line 671
at Router->dispatchToRoute(object(Request)) in Router.php line 631
at Router->dispatch(object(Request)) in Kernel.php line 229
at Kernel->Illuminate\Foundation\Http\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 139
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in ShareErrorsFromSession.php line 54
at ShareErrorsFromSession->handle(object(Request), object(Closure))
at call_user_func_array(array(object(ShareErrorsFromSession), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in StartSession.php line 62
at StartSession->handle(object(Request), object(Closure))
at call_user_func_array(array(object(StartSession), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in AddQueuedCookiesToResponse.php line 37
at AddQueuedCookiesToResponse->handle(object(Request), object(Closure))
at call_user_func_array(array(object(AddQueuedCookiesToResponse), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in EncryptCookies.php line 59
at EncryptCookies->handle(object(Request), object(Closure))
at call_user_func_array(array(object(EncryptCookies), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in CheckForMaintenanceMode.php line 42
at CheckForMaintenanceMode->handle(object(Request), object(Closure))
at call_user_func_array(array(object(CheckForMaintenanceMode), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 103
at Pipeline->then(object(Closure)) in Kernel.php line 118
at Kernel->sendRequestThroughRouter(object(Request)) in Kernel.php line 86
at Kernel->handle(object(Request)) in index.php line 54
at require_once('C:\xampp\htdocs\gpb-lvw\public\index.php') in server.php line 21

Controller 中的代码如下所示:

$rules = array(
        'bezeichnung' => array('required','unique:regale')
        );
    $validator = \Validator::make(\Input::all(),$rules);

    if($validator->fails()){
    //$messages = $validator->messages();
    //return $messages;
    return \Redirect::route('regale.create')->withErrors($validator)->withInput();    

    }
    $bezeichnung = \Input::get('bezeichnung');
    $list=new Regal();
    $list->nummer= \Input::get('nummer');
    $list->maxPaletten= \Input::get('maxPaletten');
    $list->anzahlEbenen= \Input::get('anzahlEbenen');
    $list->kunden_id=\Input::get('kunden_id');
    $list->bezeichnung = $bezeichnung;
    $list->save();
    \Session::flash('message',"Regal wurde angelegt.");
    return \Redirect::route('regale.index');

这是我的模型文件:

<?php namespace App\Models;

 use Illuminate\Database\Eloquent\Model;

 class Regal extends Model {

  protected $table = "regale";
  public function listEinlagerung(){
    return $this->hasMany('App\Models\Einlagerung');
  }
 public function kunde(){
    return $this->belongsTo('App\Models\Kunde');        
 }
 }

最佳答案

看来您的问题可能是拼写错误。在您的 Controller 中,您有 kunden_id ,在您的模型中,您有 kunde (没有“n”)。检查是否有效。

关于php - Laravel 使用可为空的外键违反完整性约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31514388/

相关文章:

linux - laravel centOS 7 chmod 755/775 权限被拒绝“无法打开 : failed to open stream: Permission denied", 仅允许我设置为 777

php - php 中的多个 SQL 插入和表单验证

php - 适合论坛的 MVC 结构

javascript - 最近 24 小时数据报告显示在 Chart.Js 中

MySQL #2006 服务器已消失/配置中定义的控制用户连接失败。 PHP 7.0.4 和 MySQL 5.7.12

mysql - SQL 尝试写入表时遇到问题。值大于特定精度

javascript - 在没有 Controller 的情况下将所有 Angular 值相加

PHP删除特定字符串之前的所有字符

PHP/MYSQL-数字运算在零处停止

python Django : Use dumpdata for single model with m2m field and mySql