SlideShare a Scribd company logo
1 of 20
Eloquent ORM(Object
Relational Mapper)
• 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';
}
?>
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:
• 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:
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:
• /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);
}
}
?>
/resources/views/pages/flowers.blade.php
@extends(‘pages.master')
@section('content')
<h1>Flowers data</h1>
<table>
<tr>
<th>Nume</th>
<th>Marime</th>
<th>Culoare</th>
<th>Pret</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>
</tr>
@endforeach
</table>
@endsection
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>
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]);
}
Creati vederea /resources/views/flowers/showflower.blade.php astfel:
<!DOCTYPE html>
<html>
<head><title>Flowers</title></head>
<body>
<h1>Details for: <?php echo $flower->nume;?></h1>
<h3>Culoare: <?php echo $flower->culoare;?></h3>
<h3>Marime: <?php echo $flower->marime;?></h3>
<h3>Pret: <?php echo $flower->pret;?></h3>
<?php echo link_to("/flowers/", ‘Back’);?>
<a href='http://localhost/laravelproj/public/flowers'>Back</a>
</body>
</html>
Vizualizati : http://localhost/laravelproj/public/flowers/lalele
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>
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>
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:
• 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:
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:
• 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';
}
?>
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:
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();
});
?>
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:
• Daca dorim sa extragem numai primele 2 inregistrari ordonate alphabetic,
vom scrie:
Return Flower::orderBy('nume', 'asc')->take(2)->get();

More Related Content

More from Razvan Raducanu, PhD (20)

12. edit record
12. edit record12. edit record
12. edit record
 
11. delete record
11. delete record11. delete record
11. delete record
 
10. view one record
10. view one record10. view one record
10. view one record
 
9. add new record
9. add new record9. add new record
9. add new record
 
8. vederea inregistrarilor
8. vederea inregistrarilor8. vederea inregistrarilor
8. vederea inregistrarilor
 
7. copy1
7. copy17. copy1
7. copy1
 
6. hello popescu 2
6. hello popescu 26. hello popescu 2
6. hello popescu 2
 
5. hello popescu
5. hello popescu5. hello popescu
5. hello popescu
 
4. forme in zend framework 3
4. forme in zend framework 34. forme in zend framework 3
4. forme in zend framework 3
 
3. trimiterea datelor la vederi
3. trimiterea datelor la vederi3. trimiterea datelor la vederi
3. trimiterea datelor la vederi
 
2.routing in zend framework 3
2.routing in zend framework 32.routing in zend framework 3
2.routing in zend framework 3
 
1. zend framework intro
1. zend framework intro1. zend framework intro
1. zend framework intro
 
18. images in symfony 4
18. images in symfony 418. images in symfony 4
18. images in symfony 4
 
17. delete data
17. delete data17. delete data
17. delete data
 
16. edit data
16. edit data16. edit data
16. edit data
 
15. view single data
15. view single data15. view single data
15. view single data
 
14. add data in symfony4
14. add data in symfony4 14. add data in symfony4
14. add data in symfony4
 
13. view data
13. view data13. view data
13. view data
 
12.doctrine view data
12.doctrine view data12.doctrine view data
12.doctrine view data
 
11. move in Symfony 4
11. move in Symfony 411. move in Symfony 4
11. move in Symfony 4
 

Recently uploaded

مختصر علم احكام القرآن فقه القرآن وفق منهج العرض
مختصر علم احكام القرآن فقه القرآن وفق منهج العرضمختصر علم احكام القرآن فقه القرآن وفق منهج العرض
مختصر علم احكام القرآن فقه القرآن وفق منهج العرضأنور غني الموسوي
 
TUYỂN TẬP 20 ĐỀ THI KHẢO SÁT HỌC SINH GIỎI MÔN TIẾNG ANH LỚP 6 NĂM 2020 (CÓ Đ...
TUYỂN TẬP 20 ĐỀ THI KHẢO SÁT HỌC SINH GIỎI MÔN TIẾNG ANH LỚP 6 NĂM 2020 (CÓ Đ...TUYỂN TẬP 20 ĐỀ THI KHẢO SÁT HỌC SINH GIỎI MÔN TIẾNG ANH LỚP 6 NĂM 2020 (CÓ Đ...
TUYỂN TẬP 20 ĐỀ THI KHẢO SÁT HỌC SINH GIỎI MÔN TIẾNG ANH LỚP 6 NĂM 2020 (CÓ Đ...Nguyen Thanh Tu Collection
 
FAIL REKOD PENGAJARAN.pptx fail rekod pengajaran
FAIL REKOD PENGAJARAN.pptx fail rekod pengajaranFAIL REKOD PENGAJARAN.pptx fail rekod pengajaran
FAIL REKOD PENGAJARAN.pptx fail rekod pengajaransekolah233
 
TUYỂN TẬP 25 ĐỀ THI HỌC SINH GIỎI MÔN TIẾNG ANH LỚP 6 NĂM 2023 CÓ ĐÁP ÁN (SƯU...
TUYỂN TẬP 25 ĐỀ THI HỌC SINH GIỎI MÔN TIẾNG ANH LỚP 6 NĂM 2023 CÓ ĐÁP ÁN (SƯU...TUYỂN TẬP 25 ĐỀ THI HỌC SINH GIỎI MÔN TIẾNG ANH LỚP 6 NĂM 2023 CÓ ĐÁP ÁN (SƯU...
TUYỂN TẬP 25 ĐỀ THI HỌC SINH GIỎI MÔN TIẾNG ANH LỚP 6 NĂM 2023 CÓ ĐÁP ÁN (SƯU...Nguyen Thanh Tu Collection
 

Recently uploaded (6)

مختصر علم احكام القرآن فقه القرآن وفق منهج العرض
مختصر علم احكام القرآن فقه القرآن وفق منهج العرضمختصر علم احكام القرآن فقه القرآن وفق منهج العرض
مختصر علم احكام القرآن فقه القرآن وفق منهج العرض
 
TUYỂN TẬP 20 ĐỀ THI KHẢO SÁT HỌC SINH GIỎI MÔN TIẾNG ANH LỚP 6 NĂM 2020 (CÓ Đ...
TUYỂN TẬP 20 ĐỀ THI KHẢO SÁT HỌC SINH GIỎI MÔN TIẾNG ANH LỚP 6 NĂM 2020 (CÓ Đ...TUYỂN TẬP 20 ĐỀ THI KHẢO SÁT HỌC SINH GIỎI MÔN TIẾNG ANH LỚP 6 NĂM 2020 (CÓ Đ...
TUYỂN TẬP 20 ĐỀ THI KHẢO SÁT HỌC SINH GIỎI MÔN TIẾNG ANH LỚP 6 NĂM 2020 (CÓ Đ...
 
FAIL REKOD PENGAJARAN.pptx fail rekod pengajaran
FAIL REKOD PENGAJARAN.pptx fail rekod pengajaranFAIL REKOD PENGAJARAN.pptx fail rekod pengajaran
FAIL REKOD PENGAJARAN.pptx fail rekod pengajaran
 
LAR MARIA MÃE DE ÁFRICA .
LAR MARIA MÃE DE ÁFRICA                 .LAR MARIA MÃE DE ÁFRICA                 .
LAR MARIA MÃE DE ÁFRICA .
 
TUYỂN TẬP 25 ĐỀ THI HỌC SINH GIỎI MÔN TIẾNG ANH LỚP 6 NĂM 2023 CÓ ĐÁP ÁN (SƯU...
TUYỂN TẬP 25 ĐỀ THI HỌC SINH GIỎI MÔN TIẾNG ANH LỚP 6 NĂM 2023 CÓ ĐÁP ÁN (SƯU...TUYỂN TẬP 25 ĐỀ THI HỌC SINH GIỎI MÔN TIẾNG ANH LỚP 6 NĂM 2023 CÓ ĐÁP ÁN (SƯU...
TUYỂN TẬP 25 ĐỀ THI HỌC SINH GIỎI MÔN TIẾNG ANH LỚP 6 NĂM 2023 CÓ ĐÁP ÁN (SƯU...
 
Energy drink .
Energy drink                           .Energy drink                           .
Energy drink .
 

12.eloquent in Laravel

  • 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); } } ?>
  • 7. /resources/views/pages/flowers.blade.php @extends(‘pages.master') @section('content') <h1>Flowers data</h1> <table> <tr> <th>Nume</th> <th>Marime</th> <th>Culoare</th> <th>Pret</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> </tr> @endforeach </table> @endsection
  • 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]); }
  • 10. Creati vederea /resources/views/flowers/showflower.blade.php astfel: <!DOCTYPE html> <html> <head><title>Flowers</title></head> <body> <h1>Details for: <?php echo $flower->nume;?></h1> <h3>Culoare: <?php echo $flower->culoare;?></h3> <h3>Marime: <?php echo $flower->marime;?></h3> <h3>Pret: <?php echo $flower->pret;?></h3> <?php echo link_to("/flowers/", ‘Back’);?> <a href='http://localhost/laravelproj/public/flowers'>Back</a> </body> </html> Vizualizati : http://localhost/laravelproj/public/flowers/lalele
  • 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();