20190704のPHPに関する記事は10件です。

【Laravel初心者による備忘録】Laravelデータベースの基本!

Laravelでデータベースを使うなら

Laravelでデータベースを使うなら、DBクラスかEloquentのどちらかを使います。

DBクラス

データベースアクセスのための基本的な機能をまとめたクラス。クエリビルだという機能も用意されている。

Eloquent

ORMを実装したもの。

ORMの説明(Wikipediaより引用)

データベースとオブジェクト指向プログラミング言語の間の非互換なデータを変換するプログラミング技法である。オブジェクト関連マッピングとも呼ぶ。

前提知識 CRUD

データベース操作の基本はCRUD(Create,Read,Update,Delete)の実装です。
SQLでは(INSERT,SELECT,UPDATE,DELETE)が対応する。

1.DBクラス

必要な手続き

データベースを設定する

config/database.phpの冒頭にある'default'の第二引数を使用したいデータベース名に設定すればOK。sqliteならsqlite、MySQLならmysql。

'default' => env('DB_CONNECTION', データベース名),

環境変数を設定する

.envファイルに環境変数がまとめられているので、この中のDB_CONNECTIONとDB_DATABASEを編集する。

DB_CONNECTION=データベース名
DB_DATABASE=使用するデータベースファイルのパスを指定

コントローラの修正

DB:selectで指定したSQL文を実行し、データベースからレコードの情報を取り出します。

use Illuminate\Support\Facades\DB;
$変数 = DB::select(実行するSQL文);
DBクラス内でのCRUD

冒頭でCRUDについて述べたと思うのですが、DBクラスでは以下の静的なメソッドを用います。

CRUD メソッド
C DB::insert(クエリ文,パラメータ配列);
R DB::select(実行するSQL文);
U DB::update(クエリ文,パラメータ配列);
D DB::delete(クエリ文,パラメータ配列);

テンプレートの修正

@foreachディレクティブなどを使用してデータを活用します。
ディレクティブに関しては以下の記事に記載してあります。

クエリビルダ

LaravelのDBクラスにはクエリビルダという機能が用意されています。
クエリビルダ=SQLのクエリ文を生成するために用意されたメソッド

2.Eloquent

必要な手続き

データベースを設定する

config/database.phpの冒頭にある'default'の第二引数を使用したいデータベース名に設定すればOK。sqliteならsqlite、MySQLならmysql。

'default' => env('DB_CONNECTION', データベース名),

環境変数を設定する

.envファイルに環境変数がまとめられているので、この中のDB_CONNECTIONとDB_DATABASEを編集する。

DB_CONNECTION=データベース名
DB_DATABASE=使用するデータベースファイルのパスを指定

モデルの作成

artisanコマンドでモデルを作成します。作成されたモデルはappフォルダに配置されます。

php artisan make:model モデル名

便利なツール

シーディングとマイグレーションはどちらの手法でも使える便利なものです。

シーディング

シード=最初から用意しておくコード
シーディングとはシードを作成する機能のこと。
初期状態でダミーのデータがあると便利。

シーダーファイルの作成

artisanコマンドでシーダーファイルを作成します。作成されたシーダーファイルはdatabase/seedsフォルダの中に配置されます。

php artisan make:seeder シーダー名

このファイルのrunメソッドにシーディング処理を記入します。

シーディングの登録

このシーダーファイルをdatabase/seeds/DatabaseSeeder.phpに登録します。
runメソッドに以下のように記入してください。

$this->call(シーダークラス::class);
シーディングの実行

以下のコマンドを使用してシーディングを実行します。

php artisan db:seed

マイグレーション

現在使っているデータベースと全く同じ構造を再現するための仕組みのこと。データベースの移行したり、環境を移行したりする際に一からデータベースを作り直しのは大変。データベースを効率よく管理したいなら、マイグレーションを利用するべき!

マイグレーションファイルの生成

以下のコマンドを実行してマイグレーションファイルを作成します。

php artisan make:migration ファイル名

database/migrationsの中に生成したマイグレーションが追加されます。

生成したファイルの中にはMigrationを継承したクラスが作成されています。このクラスにつのメソッドが用意されています。

  • upメソッド(テーブルを生成するための処理)
  • downメソッド(テーブルを消去するための処理)

それぞれ必要な処理を記述します。

主要な型の設定
説明 コマンド
プライマリキー $table->increments(フィールド名);
整数 $table->integer(フィールド名);
実数 $table->float(フィールド名);
文字 $table->String(フィールド名);
真偽値 $table->boolean(フィールド名);
日時 $table->dateTime(フィールド名);
NULL値可能なcreated_atとupdated_atカラム追加 $table->timestamps();
マイグレーションの実行

以下のコマンドを実行してマイグレーションを実行する。

php artisan migrate

コンソールにメッセージが出力され、テーブルが用意される。

多くのチュートリアルでは・・・

以下のチュートリアルでは、マイグレーションを作成しEloquentを用いてデータベースを作成していました。

個人的に苦しんだエラー特集

以下の記事を参考にしてDockerの環境を構築しました。

目的(機械学習のついでに、ローカルを汚さないようにするために...など)が果たせればOKと判断して雰囲気でDocker使ってたので、今回苦労しました(・・;) 夏休みあたりにちゃんとDocker勉強します?

Dockerでマイグレーションが作成できない

.envのDB_HOSTをデフォルト設定から変更する必要がある。docker-compose.ymlでserviceとして定義した名前を使用する。

phpMyAdminにログインできない

環境変数内(.env)のユーザーネーム、パスワード、サーバ名、全て同じものを使用してログインを試みたのに何度試しても失敗。
もう一度コンテナを作り直したら解決した。原因不明?
このエラー解消に恐ろしく時間取られたのが本当に悔しい...!

参考

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Laravel 導入手順(未完成)

Laravel 導入手順 1

Laravel初心者がデプロイ目指してわかったところを記録していくための備忘録
筆者の環境:MacOS

Composerの導入

Laravelはインストールの他、プロジェクトを立ち上げる度にComposerというコマンドラインソフトを使うらしい。
初回は以下のホームページからダウンロードする。

https://getcomposer.org/download

ダウンロードした composer.phar を
/usr/local/bin/composerへ移動するのでターミナルで以下のコマンドを打つ。

cd ~/downloads 
sudo mv composer.phar /usr/local/bin/composer.phar

これはパスを通してファイル名だけでコマンドを起動する為の準備です。
なので、任意のディレクトリにcomposer.pharを移動して、毎回そこにcdで移動しても起動すると思いますがそれは大変だしどこへ行ったか分からなくなるので初めからパスの通っているところに動かしておきます。
慣れてる人は ~/bash.rc とかにexportしてパスを通しても同じ結果になると思いますが失敗して上書きすると大変な事になるので上記の方法が安心で簡単。
あと、
cd /usr/local/bin/ で入って

ln -s composer.phar composer 

とやっておくとコマンド入力する時composerでもcomposer.pharでも動くようになる。
※補足: vs Java
他のサイトによると依存関係の管理を自動化してくれるとの解説があったので、恐らくだけど、ComposerってJavaだとMarvenとかGradleに相当するものだと思います。

Projectの作成

Composerがインストールできたらプロジェクトを作成出来るようになっているので、
プロジェクトのルートフォルダにしたいところへcdで移動してから、

terminal
composer create-project Laravel/Laravel myapp --prefer-dict

と打つとmyappという名前のプロジェクトができます。
myappの部分は自分が作りたいアプリの名前を入れる。
あと、スペースで区切られているオプションは入れ替えても動くみたいです。
例えば、
composer create-project Laravel/Laravel --prefer-dict myapp
でも同じ結果でした。(はじめのComposerはコマンド名だから固定)

プロジェクトが認識されてるかテスト起動する

プロジェクトのルートディレクトリで

php artisan serve

とするとララベルに(というかPHPに)内臓の簡易ローカルサーバーが立ち上がります。
MAMPとかTOMCATみたいなコンテナのテスト用お手軽版。
で、これを立ち上げて
http://localhost:8000/
にアクセスするとLaravelのサンプルページが表示されます。
終了するときはCtrl+cで。

Controllerの作成

Laravelのアプリケーションプロジェクトは初期状態でControllerクラスが継承されていないらしい。
代わりに初期状態ではルーティング用のファイルに無名関数でコントローラが書かれている。

web.php
Route::get('/', function () {
     return view('welcome');
}); 

しかし、このファイルは本来送られてきた(ユーザーがアクセスしてきた)URLをコントローラーのアクションメソッドへ案内する為のもので、ここでコントロールするべきではないと思います。
やろうと思えば逆に、viewをreturnする代わりにstring型で文字列をreturnする(つまりHTMLタグをここへ書く)でも動く。
ルーティングができているかの動作テストするのにファイル作るのがめんどくさい時とかは役に立ちそう。

さて、コントローラはアプリケーションプロジェクトのルートディレクトリで

terminal
php artisan make::controller IndexController  

とすればHttp/Controllersフォルダにファイルができています。
なお、最後のIndexContollerは任意の名前にできます。普通はviewの名前+Controllerにするのが良さそう?

マイグレーションファイルを作る

自分自身まだよくわかっていないので間違っているかもしれないが、雑な解釈で行くとデータベーステーブルのモデル定義を自動生成してくれる事をマイグレーションというっぽい。
ここに記述したカラムをcreateしてくれる。
.sqlスクリプトファイルとどう違うのかはよく分からない。記法はSQLより簡単だけど似たようなものだと思う。

※「マイグレーション」でググるとマイグレーションとは「移行」という意味だと書いてあったがこの場合はその解釈だとかえって意味不明なので、上記のような解釈で捉えています。

プロジェクトルートで

terminal
php artisan make:migration create_tablename_table

と打つとマイグレーションファイルができる。
databaseフォルダにmigrationsフォルダができていて、その中に生成したファイルがあるので開いて
テーブル定義を記述する。
(SQLのcreate table に相当することをここへ書く。)
書けたら

terminal
php artisan migrate

とやるとデータベースにテーブルが出る・・はずが出なかった。
エラーが出た。
Laravelのインストールの仕方によってはこれで成功するらしい。
もう解決したので忘れたが、ここでエラーが出た場合それをコピーしてググるとすぐ答えが出てくるのでその通りにする。

私の場合、envファイルに指定された名前のdatabaseがMySQLになかった。
あとdbのユーザー名とパスワードが違った。
.envファイルを開くとMySQLの項目が見つかるので、そこで使いたいdatabase名などに書き換えればいける。
ユーザー名がroot パスワードなしの場合だと
パスワードは空欄にしておく。なんか入ってたらだめ。
databaseはmysqlコマンドで入ってアプリケーション名とかをつけて作ればいいと思う。
で作った名前で.envに書いておく。

それでやり直したら接続できました。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

WordPressでjsやcssを読み込むときにキャッシュを更新させる対策

概要

WordPress開発をしているとき、jsやcssを編集したのに表示が変わっていないぞという経験は、ありませんか?

wp_enqueue_script()やwp_enqueue_style()関数で、jsとcssファイル編集後にキャッシュを更新させる対策を紹介します。

ブラウザキャッシュとは

chromeやfirefoxなどの多くのブラウザには、Webページの表示高速化を目的にキャッシュという機能があります。
このキャッシュは、Webページにアクセスした時、ブラウザで見える内容のデータ(js、css等)をキャッシュして表示を速くします。

便利な機能ですが、jsやcssを編集してあと、Webページを更新してみると、表示が変わっていないことがあります。
これは、ブラウザにキャッシュされた古いjsとcssを読み込んでいるためです。

キャッシュを更新して最新のページを表示させる対策として、以下があります。

①スーパーリロードをする。

スーパーリロードとは、ブラウザのキャッシュを無視してWebページの最新のデータを読み込む機能です。
これによって、キャッシュが上書きされ、最新のWebページが表示されます。

ただ、サイトを閲覧している人誰もがスーパーリロードを知っているとは限らないし、jsやcssが変わっていることを知りません。
誰もが最新の状態でWebページを見ることができるように開発者側が配慮する必要があります。
そのため、この方法は好ましくありません。

chromeスーパーリロードのショートカット

// Windows版
Shift + F5

// Mac版
Cmd + Shift + R

②クエリパラメータにタイムスタンプを指定する。

クエリパラメータにタイムスタンプを指定することで、プラウザが別のファイルとして認識され、最新のjsとcssが読み込まれます。

タイムスタンプの指定例

// js
<script type="text/javascript" src="example.js?date=20190101120000"></script>
// css
<link rel="stylesheet" type="text/css" href="style.css?date=20190101120000">

パラメータ名は、特に決まりはありません。書かなくても動作します。
今回は、分かりやすいようにパラメータ名をdateにしています。
あとは、jsとcssファイル更新日時のタイムスタンプを動的に変えてやればOKです。

WordPressでブラウザキャッシュ対策

WordPressでも簡単にキャッシュ対策できます。
jsとcssを読み込むwp_enqueue_script()やwp_enqueue_style()関数には、第4引数にバージョンを指定するパラメータが用意されています。

バージョンを指定しない場合、デフォルトで設定されるWordPressのバージョンが指定されるようです。
そのため、jsとcssを編集しても、WordPressをアップデートされない限りは、最新のjsとcssが読み込まれないことになります。
バージョンにタイムスタンプを指定することで、上記で紹介したクエリパラメータにタイムスタンプを指定する対策と同様のことが可能です。

タイムスタンプの指定例

// js
wp_enqueue_script( 'example',
    plugins_url( '/js/example.js', __FILE__ ),
    array(),
    date_i18n( 'YmdHis', filemtime( plugins_url( '/js/example.js', __FILE__ ) ) )
);

// css
wp_enqueue_style( 'style',
    plugins_url( '/css/style.css', __FILE__ ),
    array(),
    date_i18n( 'YmdHis', filemtime( plugins_url( '/css/style.css', __FILE__ ) ) )
);

filemtime関数でファイルの更新日時のタイムスタンプを取得しています。

ちなみに、以下方法でも可能のようです。

こちらの方法では、date以外にデフォルトで設定されるWordPressのバージョンのクエリパラメータも追加で付与されるようです。
dateのクエリパラメータだけを表示させたい場合は、上記の方法が良いです。

// js
wp_enqueue_script( 'example?date=' . date_i18n( 'YmdHis', filemtime( plugins_url( '/js/example.js', __FILE__ ) ) ),
    plugins_url( '/js/example.js', __FILE__ )
);

// css
wp_enqueue_style( 'style?date=' . date_i18n( 'YmdHis', filemtime( plugins_url( '/css/style.css', __FILE__ ) ) ),
    plugins_url( '/css/style.css', __FILE__ )
);

参考URL(WordPress Codex)

wp_enqueue_script関数

https://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/wp_enqueue_script

wp_enqueue_style関数

https://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/wp_enqueue_style

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Laravelの.envファイルと、config/database.phpファイルについてメモ

LaravelのDBを設定する際のメモ

下記ファイルについて、まとめておく。

.env
config/database.php

.env

.env は環境毎に変更したい情報をまとめておくファイルということだが、
ようは環境変数の設定を書いている。

.env
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=

config/database.php

.envファイルで設定した環境変数を取得して、DBの設定をしている。

config/database.php
'default' => env('DB_CONNECTION', 'mysql'),

    'connections' => [
        'sqlite' => [
            'driver' => 'sqlite',
            'database' => env('DB_DATABASE', database_path('database.sqlite')),
            'prefix' => '',
        ],

        'mysql' => [
            'driver' => 'mysql',
            'host' => env('DB_HOST', '127.0.0.1'),
            'port' => env('DB_PORT', '3306'),
            'database' => env('DB_DATABASE', 'forge'),
            'username' => env('DB_USERNAME', 'forge'),
            'password' => env('DB_PASSWORD', ''),
            'unix_socket' => env('DB_SOCKET', ''),
            'charset' => 'utf8mb4',
            'collation' => 'utf8mb4_unicode_ci',
            'prefix' => '',
            'strict' => true,
            'engine' => null,
        ],

        // ....
    ];

env関数について

env関数はLaravelのヘルパ関数

公式
https://readouble.com/laravel/5.5/ja/helpers.html

env関数は環境変数の値を取得する。
第2引数はデフォルト値。

ex)
'username' => env('DB_USERNAME', 'forge'),

まとめ

Laravelの設定に関して、理解が深まった。

参考にさせていただいたURL
https://laravel10.wordpress.com/2015/02/21/%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9%E3%81%AE%E7%92%B0%E5%A2%83%E8%A8%AD%E5%AE%9A/

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

WordPressで使えそうなPHPの連想配列

PHPの連想配列をたまに使おうとして忘れがちなのでメモ。

達成したいこと

  • ナビゲーションの並びを後からでも変更しやすいようにしたい
  • ナビゲーションに画像を使用したときに画像パスを含めるとソースがカオスなことになるのをナントカしたい
  • ナビゲーションは基本的に同じようなことを繰り返し書くことになるけど、書くのも見た目的にもなんだか面倒臭いので同じことを何度も書きたくない

環境

  • PHPが使用出来る環境
  • PHPのバージョンは5.4以降ならきっと大丈夫

想定

  • WordPressでファイルパスやページのパスを羅列する場合
    • echo bloginfo 云々を定数に置き換えればWordPressでなくても使えます

避けたいパターン

避けたいパターン
<li role="menuitem"><a href="<?php echo bloginfo('url'); ?>/">HOME</a></li>
<li role="menuitem"><a href="<?php echo bloginfo('url'); ?>/about/">ABOUT</a></li>
<li role="menuitem"><a href="<?php echo bloginfo('url'); ?>/gallery/">GALLERY</a></li>

上の例は3つしかないので未だマシですが、これが5つ以上になったら見るだけで発狂しそうです。

念願叶ったパターン

念願叶ったパターン
<?php
 $navLists[] = array( 'url' => '', 'name' => 'HOME' );
 $navLists[] = array( 'url' => 'about/', 'name' => 'ABOUT' );
 $navLists[] = array( 'url' => 'gallery/', 'name' => 'GALLERY' );
?>

<?php foreach ( $navLists as $navList ): ?>
 <li role="menuitem"><a href="<?php echo bloginfo('url'); ?>/<?php echo $navList['url']; ?>"><?php echo $navList['name']; ?></a></li>
<?php endforeach; ?>

「記述量増えてるじゃないか」 と何処からか石ころでも投げられてきそうですが、以下のように何かしらの変更があったときに煩わしさが減ります。

こんなとき便利かも

  • ちょっとデザインを変更したい。(大抵ちょっとの変更じゃ済まないというツッコミは今は無しで)
    • クラスだのIDだのリストの数の分だけ変更せずとも、一箇所の変更で済みます。
  • 並び順を変えたい。一部を削除したい。一部を追加したい。
  • 一部のページのURLを変えたい。一部のページのページ名を変えたい。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

php-master-changes 2019-07-03

今日はビルドシステムのリファクタリング、不要コードの削除、CI の設定修正、mysqlnd で phpinfo() へ出力していた統計情報の削除、インクリメント / デクリメントの最適化、touch() が 2038 年以降の日付に対応していなかった問題の修正、opcache の誤った最適化の修正、SEGV が起きるバグの修正幾つか、テストの修正があった!

2019-07-03

petk: Remove check for ApplicationServices/ApplicationServices.h

petk: Remove some old BeOS artefacts

petk: Remove PHP_CHECK_CONFIGURE_OPTIONS

petk: Remove libtool and automake from azure installs

petk: Enable option checking on CI

PeeHaa: Removed mysqlnd stats from phpinfo page

dstogov: Optimization of INC/DEC helpers

cmb69: Fix #78241: touch() does not handle dates after 2038 in PHP 64-bit

nikic: Fixed bug #78230

nikic: Fixed bug #78239

nikic: Skip pcntl_sigwaitinfo() test under asan/msan

nikic: Fix file conflict in fgets test

nikic: Remove curl_basic_017.phpt

nikic: Fixed bug #78231

nikic: Avoid use of random ports in some socket tests

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

LaravelでStorageを使ったファイルおよびディレクトリの操作をまとめてみた

はじめに

Laravelでファイルを取り扱った個人開発を行っている際にファイル保存の方法を調べた際に気になったため、調べてまとめました。
駅に貼られているチラシを見るように流し見していただければ幸いです。

Storageとは?

LaravelではFlysystem PHPパッケージによって提供されているファイルシステムを抽象化させたものを使えるように設定されている。
設定ファイルはconofig/filesystems.phpにあり、環境によって保存先のディレクトリが分けられている。らしい。 (引用:参考文献1)

今回はそんなStorageを使ったファイルおよびディレクトリの操作方法をまとめてみる。

基本的な書式

StorageFacadesを拡張して使われるもの。
なので書式は基本的に

 Storage::◯◯('hoge', 'fuga');

になる。

ファイル関連

ファイル保存

Storage::put

Storage::put('file_name', $file);

$fileを'file_name'という名前で保存することができます。

Storage::putFile

Storage::putFile('dir', $file);

$fileを'dir'に保存することができます。Storage::putFileでは
ファイル名は自動で設定されます。
また、

Storage::putFile('dir', $file, 'public');

とすることで$fileを一般公開したいという意思を伝えることができます。

Storage::putFileAs

Storage::putFileAs('dir', $file, 'file_name');

$fileを'dir'に'file_name'という名前で保存することができます。Storage::putFileAsでは自分でファイル名は設定することができます。

ファイル書き込み

Storage::prepend

Storage::prepend('file_name', 'hogegeeeee');

file_nameの先頭にhogegeeeeeを書き込むことができます。

Storage::append

Storage::append('file_name', 'fugagaaaaaa');

file_nameの末尾にfugagaaaaaaを書き込むことができます。

ファイルのコピー

Storage::copy

Storage::copy('old dir/file_name', 'new dir/file_name');

old dirにあるfile_nameをnew dirにコピーすることができます。

ファイルの移動

Storage::move

Storage::move('old dir/file_name', 'new dir/file_name');

old dirにあるfile_nameをnew dirに移動することができます。
また、

Storage::move('file_name', 'new_file_name');

file_nameの名前をnew_file_nameに変更できます。

ファイル削除

Storage::move

Storage::delete('file_name');

file_nameを削除することができます。
また、

Storage::delete(['file_name', 'file_name2']);

file_nameとfile_name2を削除することができます。

ディレクトリ関連

ディレクトリ内の全ファイルを取得

Storage::files

Storage::files('dir');

dirの中の全ファイルを配列で返すことができます。

Storage::allFiles

Storage::allFiles('dir');

dirの中のサブディレクトリの中も含めた全ファイルを配列で返すことができます。

ディレクトリ内の全ディレクトリを取得

Storage::directories

Storage::directories('dir');

dirの中の全ディレクトリを配列で返すことができます。

Storage::allFiles

Storage:: allDirectories('dir');

dirの中のサブディレクトリの中も含めた全ディレクトリを配列で返すことができます。

ディレクトリ作成

Storage:makeDirectory

Storage:makeDirectory('dir');

dirという名前のディレクトリを作成することができます。

ディレクトリ削除

Storage:deleteDirectory

Storage:deleteDirectory('dir');

dirという名前のディレクトリを削除することができます。

終わりに

今回はStorageを使ったファイルおよびディレクトリ操作についてまとめてみました。
完全に自己満の記事ですが、何かの役に立てれば幸いです。
最後まで見てくれたあなたがだーいすきです。(一度言ってみたかった)
それでは、またどこかで。笑

参考文献

  1. Laravel 5.5 ファイルストレージ
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

N代の人の誕生日の期間を求める

いつ使う

N代の年齢の人を抽出したいが、テーブルには誕生日カラムしかない時に。

コード

    $min_age = $generation; // 年代 
    $max_age = $min_age + 9;

    $toDay = Carbon::today();

    $y = $toDay->year - $max_age - 1;
    $d = $toDay->day + 1;
    $startDay = Carbon::parse("{$y}-{$toDay->month}-{$d}");

    $y = $toDay->year - $min_age;
    $endDay = Carbon::parse("{$y}-{$toDay->month}-{$toDay->day}");

    $user->whereBetween('birthday', [$startDay, $endDay]); // laravelならこんな感じに。

おわり

ちょくちょく使うのでメモです。
年齢をDBの方で持つべきだと思います。
ままならない。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

PrettierをPHPでも使う方法

PHP版のPrettierをインストール

$ npm install -g prettier @prettier/plugin-php

VSCodeの保存時に自動的にPrettierを起動させる

VSCodeのsettings.jsonに下記を追記する
※settings.jsonを開くには画面左下の⚙️を押し、右上の{}を押す

  "editor.formatOnSave": true,

Prettier整形させたくない時

  • prettier-ignore のコメントつけるとその下の行は整形されない
// prettier-ignore
$hoge = [
1,2,3,
  4,5,6
];
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

LaravelでSeederを個別に実行する

php artisan db:seed --class={Seederクラス名}  
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む