laravelでmodelを使う練習するときのルーティーン
laravelで「あれ、データをああやって取得するときどうやって書くんだっけ?」って毎回ぐぐりながら開発をすすめていると思って以上に効率悪いのである程度ならしたいとおもってルーティーンを考えました。
そのときの手順などをひとしきり備忘録としてまとめます。
環境の用意
すでにcomposerでapp自体は用意している前提でいきます。
環境
- xampp3.2.4
- laravel5.*,6.*,8.*
- vscode
- chrome
- laravel server
アプリ(laravel本体)のダウンロードを書籍(『PHPフレームワーク Laravel入門』『PHPフレームワーク Laravel 実践開発』)や、公式を参考に用意したりしていたらいつのまにか扱っているバージョンが増えていました。
一度にバージョンをまたいで覚えていくようなことはしませんが、参考にしているものと扱っているバージョンが違っていると無駄に詰む確率が高いのでそのときどきに合わせています。
自分のおすすめはDockerファイルをそれぞれのバージョンごとに用意しておいて必要なバージョンをビルドするやりかたですね。
もしくは、laravelのgithubで必要なバージョンを都度落とすのが早い気がします。(こちらならcomposerすらいらない)
サーバーはxamppの設定でてこずって時間がかかるのがつらみなのでlaravelの簡易サーバーを使っています。
DBサーバーだけxamppつかってます。phpmyadminは正義!
ちなみに、macではDocker、windowsではxamppをつかいわけています。(とくにいみはない)
chromeでページをひらいて準備完了
vscodeで[Ctrl + @]でコンソールをひらいて次をたたきます。
php artisan serve
PHP 7.4.13 Development Server (http://127.0.0.1:8000) started
とかえったら、[Ctrl]を押しながらリンクをクリックしてページを開くことができます。
artisan実行
練習用のモデルなどを作成していきます。
テーブルを作る
正確にはマイグレーションファイルを書きます。laravelはマイグレーションファイルで管理できるからはかどりますね!
php artisan make:migration create_customers_table
もちろん公式サイトのチートシートをみながら作成します。
public function up() { Schema::create('customers', function (Blueprint $table) { $table->bigIncrements('id'); $table->integer('member_id'); $table->char('name', 100); $table->smallInteger('pref_code'); $table->text('profile'); $table->date('last_used'); $table->integer('point'); // $table->boolean('is_member'); $table->timestamps(); }); }
ほどよく練習用テーブルがかけたらマイグレートします。
php artisan migrate
DBのテーブルを確認します。作成できていたら次に進みます。
ダミーレコードを入れておく
シーダーとファクトリを使います。Seederはレコードを追加する機能、Factoryはダミーレコードを生成する機能と考えればわかりやすいかと思います。
うえで作成した次のテーブルに対して、つぎのように作ってみます。
php artisan make:seeder CustomersTableSeeder
php artisan make:factory CustomerFactory –model=Customer
php artisan make:model Customer
<?php
use Illuminate\Database\Seeder;
use App\Customer;
class CustomersTableSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
factory(Customer::class, 10)->create();
}
}
<?php
/** @var \Illuminate\Database\Eloquent\Factory $factory */
use App\Customer;
use Faker\Generator as Faker;
$factory->define(Customer::class, function (Faker $faker) {
return [
'member_id' => $faker->randomNumber(),
'name' => $faker->name(),
'pref_code' => $faker->numberBetween(0, 46),
'profile' => '私はお客様です。そう、私はお客様なのです。猫ではありません、名前もあります。',
'last_used' => $faker->date(),
'point' => $faker->randomNumber(),
];
});
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Customer extends Model
{
//
}
マイグレーションファイルだけをメインブランチに残したかったのに、ダミーレコードをいれることを考えるとそこはしょうがなさそうです。
実行します。
composer dump-autoload
php artisan db:seed –class=CustomersTableSeeder
無事に生成されているか確認します。レコードがはいっていたら次に進みます。
gitで練習ブランチをつくる
メインブランチでマイグレーションファイルなどを作っておいて、練習ブランチでmodelなどをすきなように書いていく流れでやっています。
マイグレーションファイルをメインで作成するのは、DBのテーブルとの整合性を保つためです。テストデータをつっこみたいので、seederやfactoryを用意していたら結局modelも必要になってメインブランチがまあまあふくらみました。
ブランチを切り離した後にメインのほうはmigrationファイル以外消してもいいかもです。
git branchを切り替える
git checkout -b 練習用ブランチ
ブランチを切り替えていざ練習開始です。マイグレーションファイルと一緒にお好みでseederとかfactoryも作っておくとはかどりますね。
Modelを扱う練習タイム
いろいろ試してみます。
練習が終わったら
ブランチをメインに切り替えます。
ディスカッション
コメント一覧
まだ、コメントがありません