【问题标题】:Laravel Custom attributes affecting data insertion to dbLaravel 自定义属性影响数据插入到 db
【发布时间】:2019-11-05 11:04:46
【问题描述】:

我创建了自定义属性,这样我就可以在刀片文件中直接访问它们并且效果很好,但是在我的数据库中进行测试期间,它会给出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_lists01room_nameroom_code,@987654328 @、created_at) 值(room_total_booking、room_complete_booking、Test2、Test101、2019-11-05 11:00:16、2019-11-05 11:00:16))

保存到数据库

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

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

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

【问题讨论】:

  • 分享您尝试插入和更新问题的位置
  • @spartyboy 请查看更新。
  • 尝试这样做:$rtn = $this->roomList->create([ 'room_name' => $data['room_name'], 'room_code' => $data['room_code'] ]);
  • @MED 不幸的是,它仍然是同样的错误。

标签: laravel-5 eloquent custom-attributes


【解决方案1】:

好的。知道了。我用append代替attributes

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

现在它解决了我的问题。

【讨论】:

    猜你喜欢
    • 2015-10-06
    • 2014-11-07
    • 1970-01-01
    • 2021-10-19
    • 2019-03-04
    • 2012-05-13
    • 1970-01-01
    • 2021-07-23
    • 1970-01-01
    相关资源
    最近更新 更多