8
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ジーズアカデミーAdvent Calendar 2022

Day 22

PHPでSQL書かずにDB操作🎉 「Eloquent」モデルを使ってみた!!

Last updated at Posted at 2022-12-22

解説動画も用意しました

今回試した環境

  • Windows,11
  • XAMPP
  • PHP Version 8.1.4
  • Composer version 2.0.14
    Composerは必須なので、こちらからダウンロードしてインストールしてください。
    https://getcomposer.org/download/

⇧Windowsの場合は上記赤枠のリンクからDownload可能です⇧
 ※Macの方はコマンドになります、別記事を参照していただければと存じます。

1.用意した/Usersテーブル (テスト例)

以下、カラム構成
image.png

2.HTML表示結果

まずは上記テーブルをそのままシンプルに表示を目指す
image.png

Eloquentをダウンロード

1.Download

作業フォルダ内で以下コマンドを打ちます

composer require illuminate/database

以下のようにファイルとフォルダがダウンロードできます。
(VSCodeでフォルダを開いたところをスクリーンショットしました)
スクリーンショット 2022-12-22 172432.png

2.DB接続を関数にしてみた(とりあえずスグに使ってみたいから)

以下DB名とuser/Passwordは各々の環境に合わせて変更が必要

db.php
function db_conn(){
  require_once 'vendor/autoload.php';
  $db = new Illuminate\Database\Capsule\Manager;
  //**↓↓↓ここがDB接続設定↓↓↓**
  $db->addConnection([
      'driver'    => 'mysql',
      'host'      => 'localhost',
      'database'  => '**DB名**',
      'username'  => 'root',
      'password'  => '',
      'charset'   => 'utf8',
      'collation' => 'utf8_unicode_ci',
      'prefix'    => '',
  ]);
  //**↑↑↑ここがDB接続設定↑↑↑**
  $db->setAsGlobal();
  $db->bootEloquent();
}

3.Modelからデータを取得表示してみた!(とりあえずスグに使ってみたいから)

demo.php
<?php
require_once "db.php"; //上記のdb.phpを読み込む
db_conn();             //DB接続

//Userクラス**↓↓↓ このクラスはusersテーブルに紐づきます ↓↓↓**
class User extends Illuminate\Database\Eloquent\Model {
    public $timestamps = false; //created_at,updated_at,無効
}
//データ取得例
$users = User::all(); //全て表示
?>

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>PHP-Eloquent</title>
</head>
<body>
<table>
<?php 
    foreach($users as $user) {
?>
    <tr>
        <td><?=$user->id?></td>
        <td><?=$user->name?></td>
        <td><?=$user->lid?></td>
    </tr>
<?php
    }
?>
</table>
</body>
</html>

↓ usersテーブル👉Userクラスという仕組み ↓
・例えば「 itemsテーブル👉Itemクラス 」
・例えば「 booksテーブル👉Bookクラス」
Laravelとかもそうですね!これを使うとLaravel学ぶ時にmodel周りがスッと入ってきやすいかなと思いました。

上記のUserクラス
//Userクラス**↓↓↓ このクラスはusersテーブルに紐づきます ↓↓↓**
class User extends Illuminate\Database\Eloquent\Model {
    public $timestamps = false; //created_at,updated_at,無効
}

4.うわ~~マジでSQL書かずに動いた!

PHPでこれが使えたらマジで楽になる。
Valitronでバリデーション、DBはEloquent。
簡単にプロトタイプ作るには良いな~~~~
※SQLの基本はしっかり勉強しましょう!これとは別に必要なスキルです

5. 登録、削除もLaravel同様に書けました。当たり前か・・・

demo.php
//データ登録
$user = new User();
$user->name = "yamazaki";
$user->lid  = "test01";
$user->save();
demo.php
//データ更新
$user = User::find(1);  //id=1のnameを更新
$user->name = "yamazaki";
$user->save();
//updateメソッドの更新では「update_at」カラムを更新しようとするのですが、今回はが無いのでsaveで更新
demo.php
//データ削除
$user = User::find(1); //id=1を削除
$user->delete();

おススメ動画

PHP【クラス入門】フレームワーク学ぶ前に~学習動画リスト~
TailwindCSS入門~学習動画リスト~

役立ちましたか?

チャンネル登録・フォロー・SNSでの拡散も是非お願いいたします。

Twitter :  https://twitter.com/daisu_yamazaki
Youtube: https://www.youtube.com/@osozaki

以上

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?