Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.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
Laravel 5.8:错误字段没有默认值_Laravel_Laravel 5_Eloquent - Fatal编程技术网

Laravel 5.8:错误字段没有默认值

Laravel 5.8:错误字段没有默认值,laravel,laravel-5,eloquent,Laravel,Laravel 5,Eloquent,我看到过类似的问题,但没有一个对我有用。这就是过渡模型 这是插入码 $transition = Transition::create([ 'origin_x' => $redis['origin_x'], 'origin_y' => $redis['origin_y'], 'destination_x' => $redis['destination_x'], 'destination_y' => $r

我看到过类似的问题,但没有一个对我有用。这就是过渡模型

这是插入码

    $transition = Transition::create([
        'origin_x' => $redis['origin_x'],
        'origin_y' => $redis['origin_y'],
        'destination_x' => $redis['destination_x'],
        'destination_y' => $redis['destination_y'],
        'freight_id' => $freight->id,
        'status' => 2,
        'receiver_name' => $redis['receiver_name'],
        'receiver_mobile' => $redis['receiver_mobile'],
        'receiver_address' => $redis['receiver_address']
    ]);
我确信$redis`的数组是有价值的。但这就是错误所在

一般错误:1364字段“origin_x”没有默认值SQL:insert into FORAGE_TRANSTIONS updated_at,created_at值2019-11-02 16:42:582019-11-02 16:42:58

据我所见,Laravel没有尝试将origin_x和其他字段插入到DB中。它仅插入创建的和更新的。我有一个类似的模型叫做货运,在代码上面的几行中,我以同样的方式插入记录,没有错误。但我不知道为什么它只插入创建的和更新的

我也试过了

$transition = new Transition([....]);//array of above data
$transition->save();
它也会产生同样的错误

这就是迁移

    Schema::create('freight_transitions', function (Blueprint $table) {
        $table->bigIncrements('id');
        $table->string('origin_x');
        $table->string('origin_y');
        $table->string('destination_x');
        $table->string('destination_y');
        $table->string('receiver_name')->nullable();
        $table->string('receiver_mobile')->nullable();
        $table->string('receiver_address')->nullable();
        $table->bigInteger('freight_id')->unsigned();
        $table->foreign('freight_id')->references('id')->on('freight_freights')->onDelete('cascade');
        $table->enum('status', ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14'])->default(1);//1: start
        $table->timestamps();
    });
这是json格式的redis数组

{
"origin_x": "555",
"origin_y": "666",
"destination_x": "777",
"destination_y": "8888",
"freight_type_id": "1",
"title": null,
"description": null,
"price": 130000,
"features": "2",
"services": "2,5",
"vehicle_id": 1,
"token": "111111",
"payment_type": "3",
"user_id": 1,
"receiver_name": null,
"receiver_mobile": null,
"receiver_address": null,
"payment_status": 1,
"status": 2
}

提前感谢。

如果不使用php的json_解码功能将json转换为数组,是否将其转换为数组,然后重试。如果可能的话,为列指定默认值。

我尝试按如下方式插入数据

    $transition = new Transition;
    $transition ->origin_x = $redis['origin_x'];
    $transition ->origin_y = $redis['origin_y'];
    $transition ->destination_x = $redis['destination_x'];
    $transition ->destination_y = $redis['destination_y'];
    $transition ->freight_id = $freight->id;
    $transition ->status = 2;
    $transition ->receiver_name = $redis['receiver_name'];
    $transition ->receiver_mobile = $redis['receiver_mobile'];
    $transition ->receiver_address = $redis['receiver_address'];
    $transition->save();

尽管它可以工作,但我仍然有一个问题,为什么我在大量项目中使用的代码在这里不起作用:|

你能告诉我$redis数组的来源吗?@Saly3301我确信它从dd中获得了价值。它来自redis服务器包。正如您所看到的,错误是因为它没有尝试为origin_x和其他字段插入任何值。我无法仅使用您提供的代码进行复制,请添加dd$redis的输出;是return$redis的输出;还是dd$redis;?$redis是对象还是数组?请将此作为问题的注释。如果你能给出一个更详细的答案和附带的代码,那么把它放在这里。代码$transition=transition::create[…]清楚地显示数据在数组中。我是在问你,没有将json转换成数组吗?json只是显示数据。数据实际上是一个arraycreate,用于将数据保存到以数组格式获取值的数据库中。我们必须将值作为数组传递以创建函数。我发现最好不标记任何受保护的字段,而不是将所有字段都标记为可填充的,即受保护的$guarded=[]@强烈建议Saly3301 Laravel文档保存可填充Laravel文档中的字段,建议不要在all@Saly3301你是对的。但这里有一点。“可填充”用于指定模型中哪些字段可进行质量分配。因此,通过在Fillable中指定它们,必须没有错误
    $transition = new Transition;
    $transition ->origin_x = $redis['origin_x'];
    $transition ->origin_y = $redis['origin_y'];
    $transition ->destination_x = $redis['destination_x'];
    $transition ->destination_y = $redis['destination_y'];
    $transition ->freight_id = $freight->id;
    $transition ->status = 2;
    $transition ->receiver_name = $redis['receiver_name'];
    $transition ->receiver_mobile = $redis['receiver_mobile'];
    $transition ->receiver_address = $redis['receiver_address'];
    $transition->save();