Laravelにて既存のテーブルをモデルに設定する際の備忘録

Laravelのロゴ 備忘録

とりあえずモデルを生成する

php artisan make:model Model名

ファイル生成される場所は『appフォルダ』

コマンドを打って既存DB用のモデルを作成。モデル名はとりあえずわかるようにつければヨシ!
※テーブルがUsersならモデルはUserみたいに複数形と単数形にするのが命名規則

生成したモデルに既存のテーブル用の設定をする

デフォルトで命名規則通りの設定がされるのでオーバーライドして書き換える。

テストコード

namespace App;

use Illuminate\Database\Eloquent\Model;

class test_model extends Model
{
    //デフォルトの設定をprotectedでオーバーライドする

    protected $table = ''; // 既存のテーブルを指定
    protected $primaryKey = ''; // プライマリキーを指定

    protected $created_at = ''; // 使用するフィールド名を指定
    protected $updated_at = ''; // 使用するフィールド名を指定

    // タイムスタンプ使わない場合は$timestampsをfalseにする
    public $timestamps = false;

    public function __construct(array $attributes = [])
    {
        parent::__construct($attributes);
    }
}

コントローラで呼び出して動作確認

use でモデルを呼び出さないと動かないので注意

テストコード

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;

use App\test_model; 

class MainController extends Controller

{

    public function index()
    {

        $test= test_table::where('test_filed1','Laravel')->firstOrFail();

        return view('index',compact('test'));
    }
}

参考

Eloquent:利用の開始 5.7 Laravel

まとめ

モデルには命名規則があるからデータベース設計作り直しかと思ったけど、オーバーライドで好きなように設定変えれるのでなんとかなった。とりあえず順調だからヨシ!

コメント

タイトルとURLをコピーしました