Size: a a a

2020 April 17

RK

Roman Kolosov in Laravel Pro
аккуратно да, правильно хз)
источник

EG

Egor Gruzdev in Laravel Pro
Kushina Uzumaki
Можно изменять несколько вложенных параметров сразу:
$model->update([
 'meta->a->b' => 10,
 'meta->a->c' => 5,
]);

Можно попробовать замаппить так
collect(Arr::dot($data))->mapWithKeys(function ($value, $key) {
 return [str_replace('.', '->', $key) => $value];
})->toArray();
о де жа вю, наруууутттоооо
источник

RK

Roman Kolosov in Laravel Pro
какой то инвертер ключей в значение, такое и в пыхе есть
источник

KU

Kushina Uzumaki in Laravel Pro
Egor Gruzdev
о де жа вю, наруууутттоооо
😹ага
источник

RK

Roman Kolosov in Laravel Pro
тем более что ты сначала запихнула все в коллекцию а потом просишь массив
источник

RK

Roman Kolosov in Laravel Pro
так делать ая я яй, если работаешь с коллекцией то и работай с ней
источник

KU

Kushina Uzumaki in Laravel Pro
Roman Kolosov
так делать ая я яй, если работаешь с коллекцией то и работай с ней
Ну так ведь не сработает тогда, ибо мне массив нужен)
источник

RK

Roman Kolosov in Laravel Pro
в ларе? в ларе ну нужен) лара везде сама сереализацию врубит)
источник

RK

Roman Kolosov in Laravel Pro
плюс коллекция имеет кучу навыков
источник

RK

Roman Kolosov in Laravel Pro
которых не имеет тип массив
источник

EG

Egor Gruzdev in Laravel Pro
Kushina Uzumaki
Можно изменять несколько вложенных параметров сразу:
$model->update([
 'meta->a->b' => 10,
 'meta->a->c' => 5,
]);

Можно попробовать замаппить так
collect(Arr::dot($data))->mapWithKeys(function ($value, $key) {
 return [str_replace('.', '->', $key) => $value];
})->toArray();
а что мешает рекурсивно пробежать по объекту и unset свойства с null, дайте пример json для пробежки
источник

EG

Egor Gruzdev in Laravel Pro
у меня в одном и проектов было вот такое:
/**
* Функция преобразования объекта в массив
* @param array|object $response
* @return array
*/
function objectToArray($response)
{
 if (is_object($response)) {
   if ($response instanceof \JsonSerializable){
     $response = $response->jsonSerialize();
   } else {
     $response = (array)$response;
   }
 }

 if (is_array($response)) {
   foreach ($response as &$item){
     $item = objectToArray($item);
   }
 }

 return $response;
}

что мешает также пройтись по \stdClass рекурсивно и повыбивать не нужное, массивы только по ссылке не забывать в рекурсию отправлять.
источник

y

yu2ry in Laravel Pro
$obj = (object) $array
источник

KU

Kushina Uzumaki in Laravel Pro
Egor Gruzdev
а что мешает рекурсивно пробежать по объекту и unset свойства с null, дайте пример json для пробежки
Думаешь я так не делала?
Проблема в том, что метод апи который выполняет обновление по задаче может вызываться N-ое количество раз. Первый раз значения прилетает валидное, а второй раз прилетает значение, где в некоторых объектах внутри json'а те же ключи уже с null значениями. Соответственно, я их пропускаю и значение остается старым — ключи не стали null, да, но они просто не поменялись, остались с прежними значениями
источник

EG

Egor Gruzdev in Laravel Pro
секунду, у меня был и на этот старый код, сейчас гляну
источник

EK

Evgeniy Kuvshinov in Laravel Pro
Kushina Uzumaki
Думаешь я так не делала?
Проблема в том, что метод апи который выполняет обновление по задаче может вызываться N-ое количество раз. Первый раз значения прилетает валидное, а второй раз прилетает значение, где в некоторых объектах внутри json'а те же ключи уже с null значениями. Соответственно, я их пропускаю и значение остается старым — ключи не стали null, да, но они просто не поменялись, остались с прежними значениями
ты можешь просто ловить эвенты (до создания(creating) и до обновления(updating))
источник

y

yu2ry in Laravel Pro
Сначала Сделпй каст в массив, удали все где null, потом $obj = (object) $array может сработает)) не проверял) и иди спать
источник

EK

Evgeniy Kuvshinov in Laravel Pro
когда ловишь такой момент получишь твою модельку
источник

EK

Evgeniy Kuvshinov in Laravel Pro
возьмешь от туда свой options в виде массива
источник

EK

Evgeniy Kuvshinov in Laravel Pro
и убери из него ненужные значения через unset и запиши новый массив в options модели
источник