Laravel Пользовательские атрибуты, влияющие на вставку данных в БД - PullRequest
0 голосов
/ 05 ноября 2019

Я создал пользовательские атрибуты, чтобы я мог напрямую обращаться к ним в моем блейд-файле, и он хорошо работает, но во время моего тестирования в моей базе данных именно он выдает ошибку 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_lists (0, * 1010)*, room_name, room_code, updated_at, 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. Может кто-нибудь помочь мне разобраться?

1 Ответ

0 голосов
/ 05 ноября 2019

Хорошо. Понял. Я использовал append вместо attributes

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

И теперь это решает мою проблему.

...