违反完整性约束:1452 laravel

用户名

我在laravel中通过以下迁移创建了两个表:

用户迁移:

public function up()
{
    Schema::create('users', function($table){
        $table->increments('id')->unsigned();
        $table->string('email')->unique();
        $table->string('password', 64);
        $table->string('first_name', 32);
        $table->string('last_name', 32);
        $table->string('remember_token', 100)->nullable();
    });
}

迁移场合:

public function up()
{
    Schema::create('occasions', function($table){
        $table->increments('id')->unsigned();
        $table->integer('created_by_user_id')->unsigned();
        $table->foreign('created_by_user_id')->references('id')->on('users');
        $table->integer('updated_by_user_id')->unsigned();
        $table->foreign('updated_by_user_id')->references('id')->on('users');
        $table->timestamps();
        $table->string('title')->unique();
        $table->string('slug')->unique();
        $table->integer('category')->unsigned();
        $table->foreign('category')->references('id')->on('occasion_categories');
        $table->string('brand', 32);
        $table->string('model', 32)->nullable();
        $table->string('type', 32)->nullable();
        $table->string('body', 32)->nullable();
        $table->string('color', 32);
        $table->integer('fuel')->unsigned()->nullable();
        $table->foreign('fuel')->references('id')->on('occasion_fuels');
        $table->integer('transmission')->unsigned()->nullable();
        $table->foreign('transmission')->references('id')->on('occasion_transmissions');
        $table->decimal('usage', 6, 2)->nullable();
        $table->integer('engine_capacity')->unsigned()->nullable();
        $table->integer('building_year')->unsigned()->nullable();
        $table->string('sign', 8)->nullable();
        $table->date('mot')->nullable();
        $table->integer('kilometers')->nullable();
        $table->decimal('price', 8, 2);
        $table->decimal('action_price', 8, 2)->nullable();
        $table->text('description')->nullable();
    });
}

现在,当我尝试使用以下代码创建场合时:

Occasion::create(array(
    'created_by_user_id'=>Auth::id(),
    'updated_by_user_id'=>Auth::id(),
    'title'=>Input::get('title'),
    'slug'=>Str::slug(Input::get('title')),
    'category'=>Input::get('category'),
    'brand'=>Input::get('brand'),
    'model'=>Input::get('model'),
    'type'=>Input::get('type'),
    'body'=>Input::get('body'),
    'color'=>Input::get('color'),
    'fuel'=>Input::get('fuel'),
    'transmission'=>Input::get('transmission'),
    'usage'=>Input::get('usage'),
    'engine_capacity'=>Input::get('engine-capacity'),
    'building_year'=>Input::get('building-year'),
    'sign'=>Input::get('sign'),
    'mot'=>Input::get('mot'),
    'kilometers'=>Input::get('kilometers'),
    'price'=>Input::get('price'),
    'action_price'=>Input::get('action-price'),
    'description'=>Input::get('description')
));

我收到以下错误:

SQLSTATE [23000]:违反完整性约束:1452无法添加或更新子行:外键约束失败(henwoccasions,CONSTRAINT occasions_created_by_user_id_foreignFOREIGN KEY(created_by_user_id)参考usersid))(SQL:插入occasionsupdated_atcreated_at)值(2014-06-30 18:42:11,2014-06-30 18:42:11))

我在Google上进行了搜索,但大多数人都说我收到此错误,因为外键不存在,但是那不是真的,因为当我尝试在PhpMyAdmin中添加相同的值时,它确实起作用了,并且我使用的用户ID是插入为1,并且确实存在。

翁纳武特

您最终的sql查询为insert into occasions (updated_at, created_at) values (2014-06-30 18:42:11, 2014-06-30 18:42:11)您应该只看到updated_at并且created_at正在插入。

发生这种情况是因为默认情况下,Laravel保护您的代码免受批量分配

如果盲目地将用户输入传递给模型,则用户可以自由修改任何和所有模型的属性。因此,默认情况下,所有Eloquent模型都可以防止大规模分配。

您需要通过$fillable在模型中添加一个数组来使列可填充

class Occasion extends Eloquent
{
    protected $fillable = array(
        'created_by_user_id',
        'updated_by_user_id',
        // The rest of the column names that you want it to be mass-assignable.
    );
}

或相反,保护您不希望其可大规模分配的所有列:

class Occasion extends Eloquent
{
    protected $guarded = array(
        // Any columns you don't want to be mass-assignable.
        // Or just empty array if all is mass-assignable.
    );
}

请注意,您是Input::get()直接分配给模型。这是“批量分配”部分的警告

注意:使用受保护的方法时,仍应永远不要将Input :: get()或用户控制输入的任何原始数组传递到保存或更新方法中,因为任何不受保护的列都可能会更新。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

违反完整性约束:1452 laravel

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

Laravel:违反完整性约束

来自分类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

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

保存多对多关系时违反Laravel完整性约束

来自分类Dev

Laravel 4.1 whereHas [违反完整性约束:1052 where子句不明确的列“ confirm”]

来自分类Dev

Laravel SQLSTATE [23000]:违反完整性约束:1062复制条目

来自分类Dev

Laravel 5:违反完整性约束:1062-多对多

来自分类Dev

Laravel违反完整性约束:1052 where子句中的列“ id”不明确

来自分类Dev

Laravel Eloquent SQLSTATE [23000]:违反完整性约束:1052列... where子句不明确

来自分类Dev

Laravel SQLSTATE [23000]:违反完整性约束:1062复制条目

来自分类Dev

违反完整性约束:Laravel 子句中的 1052 列“prof_id”不明确

Related 相关文章

  1. 1

    违反完整性约束:1452 laravel

  2. 2

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

  3. 3

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

  4. 4

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

  5. 5

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

  6. 6

    Laravel:违反完整性约束

  7. 7

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

  8. 8

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

  9. 9

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

  10. 10

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

  11. 11

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

  12. 12

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

  13. 13

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

  14. 14

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

  15. 15

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

  16. 16

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

  17. 17

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

  18. 18

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

  19. 19

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

  20. 20

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

  21. 21

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

  22. 22

    保存多对多关系时违反Laravel完整性约束

  23. 23

    Laravel 4.1 whereHas [违反完整性约束:1052 where子句不明确的列“ confirm”]

  24. 24

    Laravel SQLSTATE [23000]:违反完整性约束:1062复制条目

  25. 25

    Laravel 5:违反完整性约束:1062-多对多

  26. 26

    Laravel违反完整性约束:1052 where子句中的列“ id”不明确

  27. 27

    Laravel Eloquent SQLSTATE [23000]:违反完整性约束:1052列... where子句不明确

  28. 28

    Laravel SQLSTATE [23000]:违反完整性约束:1062复制条目

  29. 29

    违反完整性约束:Laravel 子句中的 1052 列“prof_id”不明确

热门标签

归档