首页 > 解决方案 > Laravel 自定义属性影响数据插入到 db

问题描述

我创建了自定义属性,以便我可以直接在刀片文件中访问它们并且它运行良好,但是在我的数据库中进行测试期间,它是给出QLSTATE[42S22]: Column not found: 1054 Unknown column '0' in 'field list'错误的那个。这是我在模型中插入自定义属性时所做的:

protected $fillable = [
    'room_name',
    'room_code',
];

protected $dates = [
    'created_at',
    'updated_at'
];

protected $attributes = ['room_total_booking', 'room_complete_booking'];

public function getRoomTotalBookingAttribute($id){
    return \App\Models\Guest\BookingDetail::where('room_list_id', $id)->count();
}

public function getRoomCompleteBookingAttribute($id){
    return \App\Models\Guest\BookingDetail::where('room_list_id', $id)->whereReservationStatus(1)->count();
}

但是当我注释掉属性时,效果很好。这是完整的错误:

SQLSTATE [42S22]:找不到列:1054 '字段列表'中的未知列'0'(SQL:插入room_lists0,,,,,,,)值(room_total_booking 1, room_complete_booking room_name, Test2 room_code,Test101,2019-11-05 11:00 :16, 2019-11-05 11:00:16))updated_atcreated_at

保存到数据库

    $room = [];
    $room['room_name'] = $data['room_name'];
    $room['room_code'] = $data['room_code'];

    $rtn = $this->roomList->create($room);

如果您可以看到,我声明的自定义属性在value字段中。有人可以帮我解决这个问题吗?

标签: laravel-5eloquentcustom-attributes

解决方案


好的。知道了。我用append而不是attributes

protected $append = ['room_total_booking', 'room_complete_booking'];

现在它解决了我的问题。


推荐阅读