Size: a a a

Laravel для начинающих

2020 March 07

VY

Vladimir Yefremov in Laravel для начинающих
с одинаковым ключем - более позднее значение перекроет записанное ранее
источник

x

xDD in Laravel для начинающих
Vladimir Yefremov
с одинаковым ключем - более позднее значение перекроет записанное ранее
Проблема в том, что не перекрывает, а создаёт новое
источник

x

xDD in Laravel для начинающих
xDD
[
           1 => ['specification_id' => 1, 'value' => 'red'],
           2 => ['specification_id' => 2, 'value' => 10],
           3 => ['specification_id' => 3, 'value' => 20],
           4 => ['specification_id' => 4, 'value' => 520],
           5 => ['specification_id' => 2, 'value' => 200],
       ]
Этот же массив, сохраняю первый раз, в БД вот этот результат
product_id | specification_id | value |
+------------+------------------+-------+
|          1 |                1 | red   |
|          1 |                2 | 10    |
|          1 |                3 | 20    |
|          1 |                4 | 520   |
|          1 |                2 | 200
источник

VY

Vladimir Yefremov in Laravel для начинающих
xDD
Проблема в том, что не перекрывает, а создаёт новое
ты говоришь так, будто есть дока по твоему приложенияю и я обязан был ее уже прочесть :)
ничего не понятно.... и скорее всего - тебе самому :)

что и где создает новое - не знаю,
из того фрагмента, который ты привел выше - видно, что структура данных построена неправильно и это ведет ко всем поломкам:

а именно: хранятся ли у тебя где-то кроме массива те ключи - 1, 2, 3 , 4 , 5 ?

выборка из таблицы показывает нечто другое....
источник

ML

Mehrob Latipov in Laravel для начинающих
попробуй syncWithoutDetaching() вместо sync
источник

ML

Mehrob Latipov in Laravel для начинающих
Хотя не читал всех сообщений, могу ошибаться :)
источник

x

xDD in Laravel для начинающих
xDD
То есть в итоге должно быть это
Слева select -это specification_id справа value
источник

x

xDD in Laravel для начинающих
Каждый раз может увеличиваться и соответственно может попасть такой же specification_id
источник

VY

Vladimir Yefremov in Laravel для начинающих
xDD
Этот же массив, сохраняю первый раз, в БД вот этот результат
product_id | specification_id | value |
+------------+------------------+-------+
|          1 |                1 | red   |
|          1 |                2 | 10    |
|          1 |                3 | 20    |
|          1 |                4 | 520   |
|          1 |                2 | 200
у этого продукта (1), ИД спецификации [2] повторяется в 5-й строке, при чтении из таблицы именно оно попадет в результат запроса, а то, где было 10 - исчезнет,
понимаешь?
источник

x

xDD in Laravel для начинающих
Vladimir Yefremov
у этого продукта (1), ИД спецификации [2] повторяется в 5-й строке, при чтении из таблицы именно оно попадет в результат запроса, а то, где было 10 - исчезнет,
понимаешь?
Хотелось бы чтобы было именно так
источник

x

xDD in Laravel для начинающих
$item->specifications()->sync([
           ['specification_id' => 1, 'value' => 'red'],
           ['specification_id' => 2, 'value' => 10],
           ['specification_id' => 3, 'value' => 20],
           ['specification_id' => 4, 'value' => 520],
           ['specification_id' => 2, 'value' => 200],
       ]);
источник

x

xDD in Laravel для начинающих
Первый раз запишет как тут
источник

OK

Oleg 💫 Kazachkov in Laravel для начинающих
дали чужой проект, попросили кнопку добавить\
источник

x

xDD in Laravel для начинающих
после все value станут 200, на 3й раз обновления, их станет в 2 раза больше
источник

OK

Oleg 💫 Kazachkov in Laravel для начинающих
ну как обычно "кнопку"
источник

OK

Oleg 💫 Kazachkov in Laravel для начинающих
так чувак там конечно понаписал, но господи
источник

OK

Oleg 💫 Kazachkov in Laravel для начинающих
у него клаустрофобия чтоль
источник

OK

Oleg 💫 Kazachkov in Laravel для начинающих
повсюду попадаются куски с огромными отбивками\
источник

VY

Vladimir Yefremov in Laravel для начинающих
xDD
$item->specifications()->sync([
           ['specification_id' => 1, 'value' => 'red'],
           ['specification_id' => 2, 'value' => 10],
           ['specification_id' => 3, 'value' => 20],
           ['specification_id' => 4, 'value' => 520],
           ['specification_id' => 2, 'value' => 200],
       ]);
тебе нужно изменить ключи массива, чтбы они стали уникальны,
иначе ты из этого г.. не выберешься
источник

x

xDD in Laravel для начинающих
Vladimir Yefremov
тебе нужно изменить ключи массива, чтбы они стали уникальны,
иначе ты из этого г.. не выберешься
Я понимаю, но если вдруг так произойдёт что повторится, как же быть тогда, детач и снова атач?
источник