ユーザ用ツール

サイト用ツール


laravel:db_access

データベースへのアクセス

一つ上へ

データベースのアクセス情報を.envファイルに記載する。 ファイルはプロジェクトのルートディレクトリにある。

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=db_name
DB_USERNAME=db_username
DB_PASSWORD=db_password

app/routes/web.phpにルートを追加する。 user_infoテーブルからnameのみを抽出する場合を想定する。 SELECT文を実行した結果をnameに格納し、lsqlというビューにresultとして渡す。

Route::get('lsql', function () {
  $name = DB::select('select name from user_info;');
  return view('lsql', ['results'] => $name]);
});

次にresources/view/lsql.blade.phpに以下のように記載する。

<html>
<body>
<ul>
  @foreach ($results as $a)
    <li>{{ $a->name }}</li>
  @endforeach
</ul>
</body>
</html>

もし、MySQL could not find driverと表示される場合は、pdo_mysqlドライバがインストールされていない。 Oracle Linux の場合は以下のようにインストールする。

dnf install php-mysqlnd

モデルを作成する方法

以下のコマンドでモデルを作成する.

php artisan make:model Item

これでapp/Modelsディレクトリ内にItem.phpが生成される。 このファイルに使用するテーブル名を記載する。

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Item extends Model
{
    protected $table = 'table_name'; <=これを書き加える
}

次に、ルートを作成する。routes/web.phpを編集

Route::get('/lsql', 'App\Http\Controllers\LSQLController@index');

を追加する。

app/Http/Controllers/LSQLController.phpを編集する

<?php
 
namespace App\Http\Controllers;
 
use Illuminate\Http\Request;
use App\Models\Item;
 
class LSQLController extends Controller
{
    public function index() {
        $items = Item::limit(10)->get();
        return view('lsql', ['results' => $items]);
    }
}

ここでは10件のみ取得するようにし、lsql.blade.php側でresultsで取得するようにしている。

ビュー側では、これを取得して表示するよう記載する

<html>
<body>
<ul>
  @foreach ($results as $a)
    <li>{{ $a->col_name }}</li>
  @endforeach
</ul>
</body>
</html>
laravel/db_access.txt · 最終更新: 2023/04/13 11:27 by mikoto