@@ 14-89 (lines=76) @@ | ||
11 | * de ma table movies |
|
12 | * Hérite de ma super classe Model |
|
13 | */ |
|
14 | class Actors extends Model{ |
|
15 | ||
16 | /** |
|
17 | * Décrit le nom de la table |
|
18 | * que classe fait référence |
|
19 | */ |
|
20 | protected $table = 'actors'; |
|
21 | ||
22 | ||
23 | ||
24 | public function movies() |
|
25 | { |
|
26 | return $this->belongsToMany('\App\Http\Model\Movies'); |
|
27 | } |
|
28 | ||
29 | ||
30 | /** |
|
31 | * Retourne la moyenne d'age des acteurs |
|
32 | * 1er mode de Laravel pour construire mes requetes |
|
33 | * Cela me permet de conserver une syntaxe pure en Mysql |
|
34 | */ |
|
35 | public function getAvgActors(){ |
|
36 | ||
37 | //1ere methode: Utilisation de MYSQL |
|
38 | // marche mais n'est peu souple |
|
39 | /* |
|
40 | * $results = DB::select(' |
|
41 | SELECT ROUND(AVG(TIMESTAMPDIFF(YEAR,dob, NOW()))) as age |
|
42 | FROM actors |
|
43 | '); |
|
44 | */ |
|
45 | ||
46 | ||
47 | ||
48 | // 2nd méthode: PHP & MYSQL |
|
49 | // Query Builder: Le constructeur de Requête en Laravel |
|
50 | // DB::table => correspond FROM actors en MYSQL |
|
51 | // select() => corresponds a mon SELECT en MYSQL |
|
52 | // DB::raw() => permet d'utiliser les fonctions MYSQL |
|
53 | // comme ROUND() AVG() NOW()... |
|
54 | ||
55 | // first() => corresponds LIMIT 1 en MYSQL |
|
56 | ||
57 | // first() => l'equivalent de fetch() |
|
58 | // get() => l'équivalent de fetchAll() |
|
59 | ||
60 | // MAITRISE |
|
61 | ||
62 | $results = DB::table('actors') |
|
63 | ->select(DB::raw('ROUND(AVG(TIMESTAMPDIFF(YEAR,dob, NOW()))) as age')) |
|
64 | ->first(); |
|
65 | ||
66 | /* |
|
67 | $results = Actors::select(DB::raw('ROUND(AVG(TIMESTAMPDIFF(YEAR,dob, NOW()))) as age')) |
|
68 | ->first(); |
|
69 | */ |
|
70 | ||
71 | //3eme methode: Eloquant ORM |
|
72 | // Model Actors |
|
73 | // <=> SELECT AVG(dob) FROM actors |
|
74 | //$results = Actors::avg('dob'); |
|
75 | ||
76 | // je retourne le resultat de ma requete executé |
|
77 | return $results; |
|
78 | ||
79 | } |
|
80 | ||
81 | ||
82 | ||
83 | ||
84 | ||
85 | ||
86 | ||
87 | ||
88 | ||
89 | } |
|
90 | ||
91 | ||
92 |
@@ 14-49 (lines=36) @@ | ||
11 | * de ma table movies |
|
12 | * Hérite de ma super classe Model |
|
13 | */ |
|
14 | class Comments extends Model{ |
|
15 | ||
16 | /** |
|
17 | * Décrit le nom de la table |
|
18 | * que classe fait référence |
|
19 | */ |
|
20 | protected $table = 'comments'; |
|
21 | ||
22 | ||
23 | /** |
|
24 | * Return the average of notes |
|
25 | */ |
|
26 | public function getAvgNote(){ |
|
27 | $results = DB::table('comments') |
|
28 | ->select(DB::raw('ROUND(AVG(note)) as avgnote')) |
|
29 | ->first(); |
|
30 | ||
31 | return $results; |
|
32 | } |
|
33 | ||
34 | ||
35 | ||
36 | /* RELATIONS */ |
|
37 | ||
38 | public function movie() |
|
39 | { |
|
40 | return $this->belongsTo('\App\Http\Models\Movies', 'movies_id'); |
|
41 | } |
|
42 | ||
43 | public function user() |
|
44 | { |
|
45 | return $this->belongsTo('\App\Http\Models\Users'); |
|
46 | } |
|
47 | ||
48 | ||
49 | } |
|
50 | ||
51 | ||
52 |