-
Executare siruri cu instructiuni SQL
Laravel suporta in prezent urmatoarele 4 baze de date: MySQL, Postgres, SQLite, si SQL Server.
- In acest tutorial voi folosi
Laravel cu baza de date MySQL, care este, de asemenea, Baza de date implicita definita la instalarea framework-ului Laravel.
Conectare la Baza de Date MySQL
Mai intai, creati o Baza de Date in MySQL. Pentru acest tutorial am creat cu PhpMyAdmin o baza de date numita "
lrvt".
Apoi, deschideti fisierul
.env (in directorul unde aveti Laravel instalat) si adaugati datele voastre pentru conectare la MySQL.
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=lrvt
DB_USERNAME=root
DB_PASSWORD=null
- Este bine sa aveti aceleasi date adaugate in fisierul
config/database.php, la array-ul "
mysql" in "
connections".
'mysql'=>[
'driver'=> 'mysql',
'host'=> env('DB_HOST', '127.0.0.1'),
'port'=> env('DB_PORT', '3306'),
'database'=> env('DB_DATABASE', 'lrvt'),
'username'=> env('DB_USERNAME', 'root'),
'password'=> env('DB_PASSWORD', ''),
//...
],
Metoda
env() obtine valoare unei variabile de mediu sau returneaza o valoare implicita (adaugata la al doilea argument)
Fisierul config/database.php este de fapt fisierul de configurare care e folosit. Doar ca foloseste valori din env. Asta va permite sa nu fie nevoie sa modificati fisierele de configurare cand aveti un proiect pe servere diferite. Puteti avea doar un fisier .env diferit.
Daca vreti sa testati conexiunea la baza de date MySQL, adaugati acest cod in
routes/web.php :
Route::get('test-conn',function(){
// Test database connection
try {
DB::connection()->getPdo();
if(DB::connection()->getDatabaseName()){
return 'Successfully connected to the DB: '. DB::connection()->getDatabaseName();
}
} catch (\Exception $e){
return 'Could not connect to the database. Please check your configuration.';
}
});
- Apoi, accesati acest URL:
//localhost:8000/test-conn
Executare siruri cu instructiuni SQL
Dupa ce ati configurat conexiunea la baza de date, puteti executa interogari SQL folosind
Clasa DB.
Clasa DB furnizeaza metode pentru fiecare tip de interogare:
select, update, insert, delete si
statement.
Metoda statement()
Metoda
DB::statement() este folosita pentru interogari care nu returneaza nici o valoare, precum: "
CREATE TABLE" si "
DROP TABLE".
DB::statement('drop table users');
Metoda insert()
Metoda
DB::insert() este folosita pentru a executa interogarea INSERT. Primul argument e sirul SQL INSERT, al doilea argument e un array-ul cu valori pentru inlocuitorii "?" folositi in sirul SQL. Returneaza True sau False.
DB::insert('insert into users (id, name) values (?, ?)', [1, 'MarPlo']);
- Sau cu inlocuitori ":nume":
DB::insert('insert into users (id, name) values (:id, :name)', ['id'=>1, 'name'=>'MarPlo']);
Pentru a obtine
ultimul id introdus intr-o coload 'id' AUTO_INCREMENT cand o interogare Insert este efectuata cu metoda
DB::insert(), folositi metoda
DB::getPdo()->lastInsertId() dupa ce afirmatia insert este executata.
$sql ='insert into users (id, name) values (:id, :name)';
DB::insert($sql, ['id'=>1, 'name'=>'MarPlo']);
$last_id = DB::getPdo()->lastInsertId();
Interogare Select
Metoda
DB::select() returneaza un array cu randurile rezultate.
$results = DB::select('select * from users where id = ?', [1]);
- Sau cu inlocuitori ":nume":
$results = DB::select('select * from users where id = :id', ['id'=>1]);
Randurile returnate pot fi derulate cu o instructiune
foreach():
$sql ='select * from users where id > :id';
$res = DB::select($sql, ['id'=>2]);
foreach($res as $row){
//$row is an object with the columns name as properties
echo $row->column_name;
}
Metoda update()
Metoda
DB::update() este folosita pentru a efectua o interogare UPDATE. Returneaza numarul de randuri afectate.
$nr_afr = DB::update('update users set votes = 100 where name = ?', ['John']);
- Sau cu inlocuitori ":nume":
$nr_afr = DB::update('update users set votes = 100 where name = :name', ['name'=>'John']);
Metoda delete()
Metoda
DB::delete() este folosita pentru a efectua o interogare DELETE. Returneaza numarul de randuri afectate.
$nr_afr = DB::delete('delete from users where id = ?', [2]);
- Sau cu inlocuitori ":nume":
$nr_afr = DB::delete('delete from users where id = :id', ['id'=>2]);
- Documentatie:
Laravel - Database: Getting Started