0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

LaravelのEloquentについて概要を理解する

Last updated at Posted at 2024-10-23

背景 🖼️

業務でバックエンドの実装をすることが増えてきました。
復習のために今回はLaravelのEloquentについてまとめます。

こちらの本で今は勉強しています。

Eloquentとは 🐳

LaravelのORM(オブジェクトリレーショナルマッピング)です。
データベースとコードを紐付けます。
データベース接続を隠蔽し、脆弱性に対応でき、必要なデータのCRUD(Create:登録、Read:参照、Update:更新、Delete:削除)ができます。

LaravelのEloquentを使用しないコード
<?php
// データベース接続情報
$host = 'localhost';
$db   = 'example_db'; // データベース名
$user = 'username';   // ユーザー名
$pass = 'password';   // パスワード
$charset = 'utf8mb4';

// PDOでデータベースに接続
$dsn = "mysql:host=$host;dbname=$db;charset=$charset";
$options = [
    PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
    PDO::ATTR_EMULATE_PREPARES   => false,
];

try {
    $pdo = new PDO($dsn, $user, $pass, $options);
} catch (PDOException $e) {
    throw new PDOException($e->getMessage(), (int)$e->getCode());
}

// booksテーブルから全ての本を取得
$sql = "SELECT name FROM books";
$stmt = $pdo->query($sql);

// 各本の名前を表示
while ($row = $stmt->fetch()) {
    echo $row['name'] . "<br>";
}
?>

LaravelのEloquentを使用したコード
<?php

use App\Models\Books;

$books = Book:all();
foreach($books as $book) {
    echo $book->name;
}

Laravelを使用したするコードでコード量が大幅に減ります。
また、セキュリティも強化されます。

素のPHPでの記述だと以下のようにすることができ、SQLインジェクションのリスクがあります(実際はプリペアドステートメントで対応できます)。

// ユーザー入力を直接SQLに組み込む(危険)
$userInput = $_GET['book_name'];
$sql = "SELECT * FROM books WHERE name = '$userInput'";

Eloquentモデルクラス 🐘

MVCで言う所のM(Model)に当たります。

Eloquentモデルクラスはデータベースのテーブルと紐づきます。
デフォルトではクラス名のsnakeケースかつ複数形の名前のtableに紐付きます。


use Illuminate\Database\Eloquent\Model;

class Book extends Model
{
    // デフォルトでは 'books' テーブルと紐づく
}

最後に

概要レベルですが要点は掴めたと思っています。
次回は以下について書こうと思います。

  • リレーション(hasOne、hasMany、belongsTo)
  • Eloquentとクエリビルだの違い

参考 ✨

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?