Aller au contenu principal

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.

.env
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
])
}
}