Красноречивое обновление столбца json с помощью точечного ключа ⇐ Php
Красноречивое обновление столбца json с помощью точечного ключа
Я не могу найти никакой информации о том, как правильно обновить значения 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, '_'); } Именно он отвечает за то, что значение с ключом с точкой невозможно записать. Он определяет его как недоступный для записи.
Я не могу найти никакой информации о том, как правильно обновить значения 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, '_'); } Именно он отвечает за то, что значение с ключом с точкой невозможно записать. Он определяет его как недоступный для записи.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Laravel 7 – запретить красноречивое отношение из базы данных запроса, если оно равно нулю
Anonymous » » в форуме Php - 0 Ответы
- 20 Просмотры
-
Последнее сообщение Anonymous
-