Метод красноречивого обновления выдает ошибку, когда у модели есть грязное свойство, которого нет в базе данных - PullRequest
0 голосов
/ 25 февраля 2019

При добавлении свойства, которого нет в базе данных модели, и я запускаю метод обновления, он выдает ошибку.Пожалуйста, посмотрите код ниже для примера.


>>> $foo = \App\Model::first()
=> App\Model {#4364
    "id": 1,
    "name": "John",
    "created_at": "2019-02-22 15:45:28",
}

>>> $foo->bar = 'bar';
=> "bar"

>>> $foo->update(['name' => 'new_name']);

Illuminate/Database/QueryException with message 'SQLSTATE[42S22]: 
Column not found: 1054 Unknown column 'bar' in 'field list' (SQL: 
update `models` set `name` = new_name, `updated_at` = 2019-02-22 
15:33:09, `bar` = bar where `id` = 1)'

Желаемым результатом будет то, что он будет игнорировать панель свойств, когда красноречивый метод обновления запускается на foo.Кто-нибудь знает, почему это происходит и как обойти это?

1 Ответ

0 голосов
/ 25 февраля 2019

Ооо, хорошо, когда вы звоните:

$foo->bar = 'bar';

Поэтому, когда вы сейчас вызываете $ foo:

enter code here=> App\Model {#4364
    id: 1,
    name: "John",
    created_at: "2019-02-22 15:45:28",
    bar: "bar"
}

Это добавляет панель к приведенному выше экземпляру $ foo.Следовательно, когда вы вызываете update для него, он проверяет все столбцы и определяет, какие из них нужно обновить, и в этом случае bar не является столбцом в БД, поэтому возникает ошибка:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...