2. • Cand se utilizeaza Active Record Implementation(ARI), vom avea cate o clasa/un
obiect care va reprezenta o inregistrare din tabela asociata
• Daca vom avea o tabela Articles, modelul Eloquent se va numi Article
• Daca vom avea o tabela Flowers, modelul Eloquent se va numi Flower
• Pentru a crea un model vom scrie: php artisan make:model Flower
• Astfel a fost creat articolul /app/Flower.php
<?php
namespace App;
use IlluminateDatabaseEloquentModel;
class Flower extends Model {
protected $table = 'flowers';
}
?>
3. Vederea datelor (metoda1)
• Pentru a vedea toate inregistrarile, editati /routes/web.php astfel:
<?php
use AppFlower;
Route::get('/', function(){
$flowers=Flower::get(); //select * from flowers
return $flowers;
});
?>
si veti obtine:
4. • Pentru a extrage numai inregistrarea cu id-ul 1, vom edita /routes/web.php
astfel:
<?php
use AppFlower;
Route::get('/', function(){
$flowers=Flower::find(1);
return $flowers;
});
?>
si vom obtine:
5. Vederea datelor (metoda 2)
• In fisierul /routes/web.php adaugati linia:
Route::get('flowers', 'FlowersController@index');
Apoi creati controller-ul FlowersController si in acesta metoda index:
6. • /app/Http/Controllers/FlowersController.php
<?php namespace AppHttpControllers;
use AppHttpRequests;
use AppHttpControllersController;
use IlluminateHttpRequest;
//adaugati linia urmatoare
use AppFlower;
class FlowersController extends Controller {
public function index()
{
$flowers=Flower::all();
return view('pages.flowers')->with('title','Flowers data')
->with('flowers', $flowers);
}
}
?>
8. unde pagina /resources/views/pages/master.blade.php este:
<!DOCTYPE html>
<html>
<head><title> <?php echo $title;?> </title></head>
<body bgcolor='lightblue'>
@yield('content')
@yield('footer')
</body>
</html>
9. Vederea unei singure inregistrari(metoda1)
• In fisierul fisierul /routes/web.php adaugati linia:
Route::get('flowers/{nume}', 'FlowersController@show');
• In controller-ul FlowersController adaugati metoda show:
public function show($nume)
{
//select * from flowers where flower=$flower LIMIT 1
$flower=Flower::where('nume','=',$nume)->first();
return view('flowers.showflower', ['flower'=>$flower]);
}
11. Inserarea unui link intre vederea generala si
vederea unei inregistrari (metoda1)
• Editati vederea show.blade.php astfel:
<!DOCTYPE html>
<html>
<head><title>Flowers</title></head>
<h1>Flowers data</h1>
@if (count($flowers)==0)
Nu sunt inregistrari in db!
@else
<table>
<tr>
<th>Nume</th>
<th>Marime</th>
<th>Culoare</th>
<th>Pret</th>
</tr>
@foreach($flowers as $flower)
<tr>
<td><?php echo link_to("/flowers/{$flower->nume}", $flower->nume);?></td>
<td><?php echo $flower->culoare;?></td>
<td><?php echo $flower->marime;?></td>
<td><?php echo $flower->pret;?></td>
</tr>
@endforeach
</table>
@endif
</html>
12. Inserarea unui link intre vederea generala si
vederea unei inregistrari (metoda2)
• Editati vederea show.blade.php astfel:
<!DOCTYPE html>
<html>
<head><title>Flowers</title></head>
<h1>Flowers data</h1>
@if (count($flowers)==0)
Nu sunt inregistrari in db!
@else
<table>
<tr>
<th>Nume</th>
<th>Marime</th>
<th>Culoare</th>
<th>Pret</th>
<th>Actions</th>
</tr>
@foreach($flowers as $flower)
<tr>
<td><?php echo $flower->nume;?></td>
<td><?php echo $flower->culoare;?></td>
<td><?php echo $flower->marime;?></td>
<td><?php echo $flower->pret;?></td>
<td><?php echo link_to("/flowers/{$flower->nume}", 'View');?></td>
</tr>
@endforeach
</table>
@endif
</html>
13. Crearea/Inserarea unei inregistrari (metoda1)
• Pentru a insera o inregistrare in tabel, vom edita /routes/web.php astfel:
<?php
use AppFlower;
Route::get(‘add1', function(){
$flower=new Flower;
$flower->nume='albastrele';
$flower->marime='mici';
$flower->culoare='albastre';
$flower->pret='100';
$flower->save();
return Flower::all();
});
?>
Daca incercam sa vizualizam http://localhost/laravelproj/public/add1 , vom obtine o eroare:
14. • Aceasta eroare se datoreaza faptului ca Laravel se astepta ca toate
tabelele sa aiba un cmap timestamp. Pentru a modifica acest
comportament, editati modelul /app/Flower.php
<?php namespace App;
use IlluminateDatabaseEloquentModel;
class Flower extends Model {
public $timestamps=false;
protected $table = 'flowers';
}
Astfel vom obtine:
15. Crearea unei inregistrari (metoda2)
• editati modelul /routes/web.php astfel:
<?php
use AppFlower;
Route::get(‘add2', function(){
Flower::create([
'nume'=>'ghiocei',
'marime'=>'mici',
'culoare'=>'albi',
'pret'=>'30'
]);
return Flower::all();
});
?>
Daca vom incerca sa vizualizam http://localhost/laravelproj/public/add2 , vom obtine o
eroare:
16. • Aceasta eroare se va elimina daca vom edita modelul /app/Flower.php
<?php namespace App;
use IlluminateDatabaseEloquentModel;
class Flower extends Model {
protected $fillable=['nume','marime','culoare','pret'];
public $timestamps=false;
protected $table = 'flowers';
}
?>
17. Actualizarea unei inregistrari
• Pentru a actualiza inregistrarea cu id-ul 2: (2, trandafiri, rosii, mari, 60)
vom edita fisierul /routes/web.php astfel:
<?php
use AppFlower;
Route::get(‘edit1', function(){
$flower=Flower::find(2);
$flower->pret='50';
$flower->save();
return Flower::all();
});
?>
Daca vom incerca sa vizualizam http://localhost/laravelproj/public/edit1 , vom
obtine:
18. Stergerea unei inregistrari
• Pentru a sterge inregistrarea cu id-ul 2: (2, trandafiri, rosii, mari, 60)
vom edita fisierul /routes/web.php astfel:
<?php
use AppFlower;
Route::get(‘delete', function(){
$flower=Flower::find(2);
$flower->delete();
return Flower::all();
});
?>
19. Ordonarea inregistrarilor
• Pentru a ordona alfabetic toate inregistrarile, editati /routes/web.php astfel:
<?php
use AppFlower;
Route::get(‘order', function(){
return Flower::orderBy('nume', 'asc')->get();
});
?>
Daca vom incerca sa vizualizam http://localhost/laravelproj/public/order ,
vom obtine:
20. • Daca dorim sa extragem numai primele 2 inregistrari ordonate alphabetic,
vom scrie:
Return Flower::orderBy('nume', 'asc')->take(2)->get();