Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Laravel Eloquent foreach i save
markonix
post
Post #1





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

Ostrzeżenie: (0%)
-----


  1. $i = 0;
  2. $trainings->each(function($training) use ($i) {
  3. dump($training->id);
  4. $training->topic = ++$i;
  5. $training->save();
  6. });


Czy użyje foreach czy each to nie zadziała. W $trainings mam ładną kolekcję obiektów Training zwróconą za pomocą ->get().
Samo $training->topic działa, nadpisze atrybuty ale gdy użyje to wraz save() to wszystko się psuje - dump zwraca za każdym razem id pierwszego obiektu.

Nie umiem zrozumieć dlaczego to nie działa? Jakieś rozwiązania na szybko bym znalazł (skorzystać z QB czy tworzyć w każdym obrocie pętli $obj = new Training::find($training->id) ale to by było mega słabe (na każdy obrót pętli 2 zapytania).

Generalnie najbardziej optymalnie by było coś w stylu:
  1. $i = 0;
  2. $trainings->each(function($training) use ($i) {
  3. dump($training->id);
  4. $training->topic = ++$i;
  5. });
  6.  
  7. $trainings->save();

Ale to już bardziej rozumiem, że nie przechodzi (ale nie ukrywam, było by miło jakby był też sposób aby w ten sposób masowo updatejtnąć wszystkie obiekty).
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
markonix
post
Post #2





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

Ostrzeżenie: (0%)
-----


Gdy się położyłem to mi się dopiero żarówka zaświeciła.
Generalnie ta cała akcja służy reindeksacji pewnej kolumny przy delete/update/insert. Dla delete i insert nie ma problemu jednak problem przychodzi przy update.
  1. static::updated(function($training) {
  2. static::reindex($training->date);
  3. });

Używając eloquent spowoduje zapętlenie - update użytkownika odpala metodę reindex(), która odpala event. Podpowiedzią był error 500 zwracany przez ajax.
Pytanie jak do tego teraz fajnie podejść. Użycie Query buildera generalnie rozwiązuje problem, jako, że on nie odpala eventów.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 11.10.2025 - 06:28