![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 2 707 Pomógł: 290 Dołączył: 16.12.2008 Skąd: Śląsk Ostrzeżenie: (0%) ![]() ![]() |
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:
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). |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#3
|
|
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.
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. |
|
|
![]()
Post
#4
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Zacznij prosze zakladac tematy we wlasciwym dziale. Przenosze
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 2 707 Pomógł: 290 Dołączył: 16.12.2008 Skąd: Śląsk Ostrzeżenie: (0%) ![]() ![]() |
Problem i tak się okazał "ponad frameworkowy". Zapętlenie się eventów na update to raczej problem logiczny (IMG:style_emoticons/default/wink.gif)
|
|
|
![]()
Post
#6
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Nie mniej jednak mocno dotyczylo to jak dziala Laravel i eloquent (IMG:style_emoticons/default/wink.gif)
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
Możesz wywalić eventy dając `Training::flushEventListeners();`
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 2 707 Pomógł: 290 Dołączył: 16.12.2008 Skąd: Śląsk Ostrzeżenie: (0%) ![]() ![]() |
Ostatecznie podszedłem do tego bardziej skomplikowanie.
Wyłuskałem z dokumentacji ciekawe metody isDirty() i getOriginal() i wykonuje tylko reIndex w momencie gdy zmieniła się godzina. Przy okazji jest to też rozwiązanie na problem na który bym wcześniej nie zwrócił uwagi - reindeks działał każdorazowo tylko na NOWĄ datę, a przy zmianie daty jest on potrzebny także dla oryginalnego dnia. Tak więc ostateczny kod:
Ten post edytował markonix 5.04.2017, 11:05:06 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 25.08.2025 - 05:54 |