Model
Connexion
Lors de l'installation vous avez définie les variables pour la connexion à votre base de données. Si ce n'est pas fait vous pouvez toujours le faire en regardant cette partie Installation.
DB_NAME=YOUR_DB_NAME
DB_USER=YOUR_DB_USER
DB_PASSWORD=YOUR_DB_PASSWORD
DB_HOST=YOUR_DB_HOST
La connexion à la base de données se fait automatiquement via le fichier
app/Models/Model.php
qui fait une connexion à une bdd mysql. Si vous avez
une autre base de données vous pouver changer la connexion ici :
namespace App\Models;
class Model
{
protected $db;
public function __construct()
{
$host = env('DB_HOST');
$dbuser = env('DB_USER');
$dbpwd = env('DB_PASSWORD');
$dbname = env('DB_NAME');
$pdoReqArg1 = "mysql:host=". $host .";dbname=". $dbname .";";
$pdoReqArg2 = $dbuser;
$pdoReqArg3 = $dbpwd;
try {
$this->db = new \PDO($pdoReqArg1, $pdoReqArg2, $pdoReqArg3);
$this->db->setAttribute(\PDO::ATTR_CASE, \PDO::CASE_LOWER);
$this->db->setAttribute(\PDO::ATTR_ERRMODE , \PDO::ERRMODE_EXCEPTION);
$this->db->exec("SET NAMES 'utf8'");
} catch(\PDOException $e) {
$errorMessage = $e->getMessage();
echo $errorMessage;
}
}
}
Utilisation
Comme nous avons pu voir dans la partie rooting nous pouvons appeler des Model
dans le controller.
Nous allons donc créer le Model User
.
namespace App\Models;
class User extends Models
{
public function getUserById(int $id)
{
$qry = "SELECT * FROM user WHERE id = :id";
$stt->db->prepare($qry);
$stt->execute([
'id' => $id
]);
return $stt->fetch(\PDO::FETCH_COLUMN);
}
}
Ici nous avons créé la fonction getUserById
du Model User, on fait un extends
de Model pour pouvoir hériter du consctruteur de ce dernier et faire notre reqêtes SQL.
Ensuite nous pouvons appeler notre Model dans le Controller UserController
.
namespace App\Controllers;
use App\Controllers\Controller;
use App\Models\User;
class UserController extends Controller
{
private $userModel;
public function __construct()
{
$this->userModel = new User();
}
public function getUser(int $id)
{
$user = $this->userModel->getUserById($id);
return view('pages/user/view.php', [
'user' = $user
])
}
}