wykonanie działania na wielu tabelach w Laravelu

Odpowiedz Nowy wątek
2018-02-12 17:43
0

Witam, jak jednym kliknięciem wykonać działanie które do jednej tabeli doda dane, w drugiej je zaktualizuje a z trzeciej usunie?
Dokładniej:
Mam przycisk na stronie który jest już finalizacją pewnej akcji. Po jego kliknięciu, oczywiście jest to przycisk formularza, dane z formularza muszą zostać dodane do 'tabeli1', w 'tabeli2' musi zostać zaktualizowany rekord o id przekazanym w formularzu a w 'tabeli3' rekord o danym id musi zostać usunięty. Mam nadzieję że teraz jest jaśniej :)]
Dzięki :)

Pozostało 580 znaków

2018-02-13 17:49
0

Mogę jednak powstrzymuje mnie błąd, wydaje mi się że robię coś źle w web.php lub formularzu,
mam taki kod w web.php
Route::get('/delete-user/{id}', '[email protected]');
i takie przekierowanie formularza:
<form action="{{ url('delete-user', $user->id) }}" method="post"
czy to jest ok?

Pozostało 580 znaków

2018-02-13 17:50
0

Route::get <-> method="post"

Na marginesie: to jest akcja formularza, nie przekierowanie.


edytowany 1x, ostatnio: Patryk27, 2018-02-13 17:50

Pozostało 580 znaków

2018-02-13 17:52
0

ok, rozumiem czyli jak by to miało ostatecznie wyglądać?
może tak?
Route::post('/delete-user/{id}', '[email protected]');

Pozostało 580 znaków

2018-02-13 17:53
1

Tak, w taki sposób powinno zadziałać - natomiast nie jest to poprawne podejście.

Laravelowo powinno to wyglądać tak:

Route::delete('/users/{id}', '[email protected]');

Czyli nie powinieneś tworzyć routingu /add-user, /delete-user, /update-user itd., tylko raczej /users, /users/create itd. i nie powinieneś bać się wykorzystywać innych metod ponad get czy post - po to one są ;-)


edytowany 8x, ostatnio: Patryk27, 2018-02-13 17:55

Pozostało 580 znaków

2018-02-14 15:07
0

ok, a jeszcze przy dodawaniu. W dokumentacji jest taki kod:

DB::table('users')->insert([
    ['email' => '[email protected]', 'votes' => 0],
    ['email' => '[email protected]', 'votes' => 0]
]);

i jak on ma wyglądać aby dane odebrane z formularza przeszły przez request?
pierwsza wartość czyli w tym przypadku'email' to nazwa kolumny w bazie, druga, czyli [email protected]to wartość domyślna, dobrze rozumiem? w miejsce votes daje $request a na końcu nazwa pola z formularza? czyli całość wygląda tak ['email' => '[email protected]', $request => 'email']? Nie wiem czy dobrze zrozumiałem także proszę o info, dzięki :)

Pozostało 580 znaków

2018-02-14 15:51

to wartość domyślna

Po prostu wartość.

a na końcu nazwa pola z formularza?

['email' => $request->get('email'), 'votes' => $request->get('votes'), ...]

Przy czym znacznie lepiej jest zapisywać dane przez modele, nie bezpośredni dostęp do bazy.


Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 0, botów: 1

Robot: Semrush