レスポンシブデザインに対応するといくつもの解像度に対応する必要があります。
Google ChromeのDevToolsなどで解像度を変えられますが複数のサイズを確認するのは結構大変です。
それらを一度に確認することができるプラグインです。
既存にあればそれを選択、なければサイズとタイプ(iPhone, iPad, Google Chromeなど)を入力して作ることもできます。
それらをまとめて確認できるので便利です。
レスポンシブデザインに対応するといくつもの解像度に対応する必要があります。
Google ChromeのDevToolsなどで解像度を変えられますが複数のサイズを確認するのは結構大変です。
それらを一度に確認することができるプラグインです。
既存にあればそれを選択、なければサイズとタイプ(iPhone, iPad, Google Chromeなど)を入力して作ることもできます。
それらをまとめて確認できるので便利です。
デザインカンプを元にWebサイトを実装するわけですが、ぴったり合わせるのはなかなか難しいです。
PerfectPixelというプラグインがあります。
PerfectPixel by WellDoneCode (pixel perfect)
デザインカンプから画像として出力したファイルを読み込んでWebサイト上の上に重ね合わせることで、どれくらいズレているかはっきり分かります。
DevToolsで微調整すればリアルタイムで位置や大きさの調整が出来ます。
Webサイト(フロントエンド)を作成していると、デザインカンプ通りに出来ているか色々確認したくなります。
1. 画面上のオブジェクトの位置やサイズを知る
以下のサイトで詳しい説明がされています。
「Designer Tools」の使い方:画像や任意の位置のサイズをピクセル単位で測定可能
3. フォント名やサイズを知る
Designer Toolsではフォントを含んだ箱のサイズしか分かりません。テキストのフォント名やサイズを知るためのツールです。
以下のサイトで詳しい説明がされています。
フォントサイズが分かる拡張機能「WhatFont」が便利だよ
Webサイトで使っている色の値(カラーコード)を知るためのもです。
日本から受領したCSVデータをローカルのPostgreSQLにインポートしたらなぜか
date/time field out of range "1/31/2022"
というエラーメッセージが、範囲外って言われても?
Error “date/time field out of range” occurs for MDY date style
えっ?
ひょっとして、 "31/1/2022"って書かないとダメってこと?
これが正解でした。
いやおかしい、私の環境では問題なく、他の担当の環境で発生しました。
同じPostgreSQLでバージョンも15なんですが???
釈然としませんが忘備録としてメモしておきます。
以前の記事でデータベースにアプローチする方法を記載しました。
MVCモデルを使って実装していきたいので、Eloquent(ORM)「エロクアント」の使い方について学んでいきます。
Eloquentを使用する場合、各データベーステーブルに対応する「モデル」があり、そのテーブル操作に使用します。Eloquentモデルは、データベーステーブルからレコードを取得するだけでなく、テーブルへのレコード挿入、更新、削除も可能です。上記の通り、Eloquentを使用するには対象のテーブルに対応するモデルがあり、それに対して操作を行うとのことです。
テーブル名
別の名前を明示的に指定しない限り、クラスの複数形の「スネークケース」をテーブル名として使用します。
とりあえずModelを作ってみます。
Userモデルを作ろうと思ったのですがなぜか最初から存在しています。
Productモデルを代わりに作成します。
$php artisan make:model Product
app/Models/Product.phpが以下のように生成されました。
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Product extends Model
{
use HasFactory;
}
マイグレーションはデータベースのバージョン管理のようなもので、チームがアプリケーションのデータベーススキーマを定義および共有できるようにします。
$php artisan make:migration create_products_table
こんな感じでコマンドを実行するとdatabase\migrations/2023_04_10_075612_create_products_table.phpが以下のように生成されました。
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('products', function (Blueprint $table) {
$table->id();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('products');
}
};
ただこれだけだと、idとタイムスタンプしかないので編集していきます。
プライマリーキーは、product_idにしました。以下のように設定します。
![]() |
| マイグレーションファイル |
$php artisan migrate
を実行すると以下のようにテーブルが作成されました。
![]() |
| コマンド実行してテーブルを新規作成する |
DBを確認すると以下のようにテーブルが作成されていました。
![]() |
| 作成されたテーブル |
<?php
namespace Database\Seeders;
use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Database\Seeder;
class ProductSeeder extends Seeder
{
/**
* Run the database seeds.
*/
public function run(): void
{
//
}
}
上記のようにrun()メソッドがあるだけです。
ここに初期データを記載していきます。Eloquentを使って1件のデータを作成してみます。
<?php
namespace Database\Seeders;
use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Database\Seeder;
use App\Models\Product;
class ProductSeeder extends Seeder
{
/**
* Run the database seeds.
*/
public function run(): void
{
Product::create([
'product_name' => 'Test1',
'product_price' => 100,
]);
}
}
$php artisan db:seed --class ProductSeeder
を実行します。
想定したレコードがproductsテーブルに挿入されました。
設定したのは、”product_name”、”product_price” のみです。他のカラムは自動的に設定されました。
プライマリーキーも自動で1が設定されています。
前回でアプリ用のDBの作成が終わりました。
DB用の接続情報を設定してからModelとマイグレーションファイルを作ってみます。
.envファイルの11 - 16行目がDB接続情報の記述欄です。
デフォルトでMySQLになっているので、DB名、ユーザ名、パスワードだけを修正すれば良いです。
![]() |
| .envファイルのDB接続情報 |
Eloquentを使用する場合、各データベーステーブルに対応する「モデル」があり、そのテーブル操作に使用します。Eloquentモデルは、データベーステーブルからレコードを取得するだけでなく、テーブルへのレコード挿入、更新、削除も可能です。
ようやくModelが出てきました。
モデルは通常app\Modelsディレクトリにあり、Illuminate\Database\Eloquent\Modelクラスを拡張します。make:modelArtisanコマンドを使用して、新しいモデルを生成します。
$php artisan make:model モデル名
でモデルを生成できます。
| モデル名 | テーブル名 |
|---|---|
| Flight | flights |
| AirTrafficController | air_traffic_controllers |
クラス名の複数形をスネークケースにしたものが自動的にテーブル名と見なされます。
これに適合しない場合はモデルのtableプロパティに設定します。
テーブル名
上記の例をちょっと見て、どのデータベーステーブルがFlightモデルに対応するかをEloquentに知らせていないことにお気づきかもしれません。別の名前を明示的に指定しない限り、クラスの複数形の「スネークケース」をテーブル名として使用します。したがって、この場合、EloquentはFlightモデルがflightsテーブルにレコードを格納し、AirTrafficControllerモデルはair_traffic_controllersテーブルにレコードを格納すると想定できます。
モデルの対応するデータベーステーブルがこの規約に適合しない場合は、モデルにtableプロパティを定義してモデルのテーブル名を自分で指定できます。
主キー
Eloquentは、各モデルの対応するデータベーステーブルにidという名前の主キーカラムがあることも想定しています。必要に応じて、モデルのprotected $primaryKeyプロパティを定義して、主キーとして機能する別のカラムを指定できます。
さらに、Eloquentは、主キーが増分整数値であることも想定しています。これは、Eloquentが主キーを自動的に整数にキャストすることを意味します。非インクリメントまたは非数値の主キーを使用する場合は、モデルにpublicのこの記事では、モデルの作成、マイグレーションファイル作成、シードの作成まで行こうと思っていましたが長くなってきたので次の記事で書くことにます。$incrementingプロパティを定義し、falseをセットする必要があります。
Laravelの実行、デバッグ環境はLaragonにしました。
アプリを起動して画面で右クリック→MySQL→phpMyAdminを選択してもなんか良く分からんWebページが表示されるだけで起動しません。
Laragon で PHP による動的サイトの開発環境を構築
によれば
https://www.phpmyadmin.net/downloads/
ここから最新版をダウンロードして「C:\laragon\etc\apps」に展開すれば良いようです。
フォルダ名は”phpMyAdmin”
もう一度起動すると問題なくログイン画面になります。
ユーザ名:root
パスワード:(空白)
でログインできます。
ログインできました。
適当にDBを作成します。
以前書いた気がしますが
https://web2sunny.blogspot.com/2023/03/xamppmysqldb.html
文字コード:utf8mb4
Collation:utf8mb4_bin
で良いと思います。
フロントエンド系の方に興味が行っていましたがまたバックエンド系に戻ってきました。 Laravelです。 かなり忘れてます、自分のブログを見ながらもう一度です。 今回はMVCパターン、そして Eloquentを使えるようになるのが目的です。 まずはプロジェクト作成から 1. Com...