Красноречивое обновление столбца json с помощью точечного ключаPhp

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Красноречивое обновление столбца json с помощью точечного ключа

Сообщение Anonymous »


Я не могу найти никакой информации о том, как правильно обновить значения json с помощью точек в ключе. Подскажите, где уточнить эту информацию и как это сделать? Можно ли это сделать средствами Eloquent? Или только через необработанный запрос?

в состоянии столбца базы данных у нас есть эти данные

{"2.7":35,"2.9":24,"2.95":8.99} Я пробовал. С защитой или без. Значения с точками успешно сохранены. Ключи с точками невозможно получить и обновить. не работаю

Something::find(1005)->update(['state->2.95'=>8.7]); Something::find(1005)->update(['state->2\.95'=>8.7]); Операция прошла успешно, но результата нет. Значение не меняется.

Изучив операции, которые выполняет Eloquent. Я обнаружил несколько методов, которые разделяют ключ с помощью точки. Существует также метод, который проверяет, заполнен ли этот ключ. Illuminate\Database\Eloquent\Concerns\GuardsAttributes::isFillable

/** * Определить, может ли данный атрибут быть присвоен массово. * * @param строка $key * @return логическое значение */ публичная функция isFillable($key) { if (static::$unguarded) { вернуть истину; } // Если ключ находится в «заполняемом» массиве, мы, конечно, можем предположить, что он // заполняемый атрибут. В противном случае мы проверим защищенный массив, когда // нам нужно определить, занесен ли атрибут в черный список модели. if (in_array($key, $this->getFillable())) { вернуть истину; } // Если атрибут явно указан в «защищенном» массиве, мы можем // немедленно возвращаем false. Это означает, что этот атрибут определенно не // заполняемый и нет смысла идти дальше в этом методе. if ($this->isGuarded($key)) { вернуть ложь; } вернуть пустой($this->getFillable()) && ! str_contains($key, '.') && ! str_starts_with($key, '_'); } Именно он отвечает за то, что значение с ключом с точкой невозможно записать. Он определяет его как недоступный для записи.
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»