-
Update
-
Delete
Constructorul de comenzi SQL din Laravel furnizeaza o interfata fluenta pentru crearea si executarea de instructiuni SQL in baze de date.
- Foloseste extensia PDO cu parametri de protectie SQL injection. Nu e nevoie de filtrarea datelor adaugate in instructiunile SQL.
Mai intai, adaugati class
Facades DB in controller:
use Illuminate\Support\Facades\DB;
Apoi, se foloseste metoda
DB::table() pentru a incepe construirea interogarii SQL.
Insert
Pentru a executa instructiuni INSERT cu constructorul de comenzi, folositi metoda
insert(). Aceasta acepta un array cu nume si valori pt. coloane.
DB::table('users')->insert(['name'=>'MarPlo', 'votes'=>0]);
- Pentru a introduce mai multe inregistrari in tabel cu o singura apelare a metodei insert(), adaugati o serie de mai multe array-uri in array.
DB::table('users')->insert([
['name'=>'MarPlo', 'votes'=>0],
['name'=>'PloMar', 'votes'=>0]
]);
Auto-incrementare ID
Daca tabelul are o coloana id
AUTO-INCREMENT, folositi metoda
insertGetId() pentru a face INSERT si sa obtineti ID-ul.
$id = DB::table('users')->insertGetId(['name'=>'MarPlo', 'votes'=>0]);
Update
Pentru a face UPDATE in MySQL cu constructorul de comenzi, folositi metoda
update(). Aceasta acepta array cu nume si valori pt. coloane.
Puteti de asemenea sa folositi clauze
where().
DB::table('users')->where('id', 1)->update(['votes'=>1]);
- Cand faceti
UPDATE la o coloana JSON (
in baze de date care suporta coloane JSON), folositi sintaxa "->" pentru a accesa elementul potrivit din obiectul JSON.
DB::table('users')->where('id', 1)->update(['options->enabled'=>true]);
Metodele increment() si decrement()
Pentru a incrementa sau micsora valoarea dintr-o coloana numerica, puteti folosi metodele:
increment('col', $nr) / decrement('col', $nr).
Primul argument e 'numele coloanei', al doilea argument e optional, reprezinta cantitatea de incrementare sau micsorare.
DB::table('users')->increment('votes');
DB::table('users')->increment('votes', 5);
DB::table('users')->decrement('votes');
DB::table('users')->decrement('votes', 5);
- Puteti sa specificati si alte coloane pt. update in timpul operatiunii de incrementare /decrementare.
DB::table('users')->increment('votes', 1, ['name'=>'MarPlo']);
Delete
Ca sa stergeti randuri din tabel MySQL, puteti folosi metoda
delete().
De asemenea, puteti aplica si clauze
where().
DB::table('users')->where('votes', '>', 10)->delete();
- Daca vreti sa faceti TRUNCATE la un tabel (
instructiune ce sterge toate randurile si reseteaza la 0 coloana id de tip AUTO-INCREMENT), folositi metoda
truncate().
DB::table('users')->truncate();
- Documentatie:
Laravel - Database: Query Builder