| @@ 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 | ||