Может я что-то упускаю, но в примере из документации дан следущий код обновления записи в таблице:
$model->updateByField('name', 'John', 'Johnny'); //в поле 'name' значения 'John' заменить на 'Johnny'
Сам метод выглядит так (его начало):
public function updateByField($field, $value, $data = null, $options = null, $return_object = false)
{
if (is_array($field)) {
$return_object = $options;
$options = $data;
$data = $value;
$value = false;
}
$where = $this->getWhereByField($field, $value);
$values = array();
foreach ($data as $f => $value) {
if (isset($this->fields[$f])) {
$values[] = $this->escapeField($f)." = ".$this->getFieldValue($f, $value);
}
}
Т.е. 'Johnny' попадает в переменную $data, которая без проверки на is_array скармливается foreach, что вызывает warning:
PHP Warning: Invalid argument supplied for foreach() in /home/somesecretpath/www/wa-system/database/waModel.class.php on line 408
1 комментарий
Некорректный пример в документации исправили, спасибо.