Laravel created_at和updated_at在更新操作中更新为相同的值

时间:2016-04-17 07:14:15

标签: php laravel

在使用其他数据库的列信息更新现有数据后,

在laravel中,created_atupdated_at都会更新为相同的值。

我的表格:

{!! Form::model($user_data,array('url' => array('manageUsers', $user_data->id), 'files' => true,'method' => 'PUT', 'class'=>'validate','id'=>'xfrm_submit')) !!}
{!! Form::hidden('id',$user_data->id) !!}
<div class="form-group">
    {!! Form::label( 'acceptor_name','Acceptor Name:' ) !!}
    <span style="color:#ff0000;padding: 0 2px 2px 0">*</span>
    <input id="acceptor_name"
           name="acceptor_name"
           type="text"
           value="{{$user_data->acceptor_name}}">
</div>
</form>

我的操作员update操作:

public function update(StoreUserManagment $request)
    {
        $user_data  = User::find($request->input('id'));
        $user_data->acceptor_name =$request->input('acceptor_name');
        $user_data->save();
        return redirect('manageUsers');

    }

迁移文件:

public function up()
{
    Schema::create('users', function (Blueprint $table) {
        $table->increments('id');
        $table->string('name', '20');
        $table->string('family', '25');
        $table->string('username', '15')->unique();
        $table->string('password', '64');
        $table->string('token', '50');
        $table->string('email', '20')->unique();
        $table->string('remember_token', '100');
        $table->string('image_file_name', '50');
        $table->string('mobile_number', '13');
        $table->tinyInteger('status');
        $table->text('account_state_note');
        $table->timestamps();
    });
}

3 个答案:

答案 0 :(得分:2)

这是一个问题https://github.com/laravel/framework/issues/11518

我使用->nullableTimestamps()代替->timestamps()

解决了这个问题

你可以试试这个,可能会起作用

答案 1 :(得分:1)

这不是Laravel或PHP问题,但这是MySQL 5.7更改(您可能使用MySQL 5.7)。要解决此问题,您需要允许时间戳为空,因此MySQL不会填充当前时间戳,因此在Laravel中您需要使用nullableTimestamps()代替timestamps()或使用timestamp()->nullable()对于单个时间戳字段。

答案 2 :(得分:0)

您在控制器中调用save()而不是update()