2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

個人的にお世話になったツール、PHP技術まとめサイト

Posted at

【参考サイト】

■整形ツール
WebToolBox(SQL、Json整形)

■変数名
codic
プログラミングの変数・メソッドの命名でよく使う英単語まとめ

■判定
PHP isset, empty, is_null の違い早見表

■演算子
PHPの演算子一覧:種類や使い方を解説(php8対応)

APIテスター

FireShot

【Laravel保存処理】

■isDirty():データが更新されたかどうか確認
https://minory.org/laravel-isdirty-getdirty.html

■touch():モデルで更新日(updated_at)のみ変更する
https://pgmemo.tokyo/data/archives/1311.html

■save():更新データとの差分を見て更新するか決めてる

■update():更新データとの差分を見てないで更新

この時、もし$request->nameが既存データと同じデータだとしたら
save()
updated_atのカラムが更新されない

update()
updated_atのカラムが更新される
https://qiita.com/gomaaa/items/91e5cbd319279a2db6ec

■insertGetId()
テーブルにinsertしたデータのIDなどを取得する方法
https://goldenshield.hatenablog.com/entry/2018/10/21/154125

■updateOrCreate()
updateOrCreateメソッドを利用して登録・更新ロジックを共通化
https://zenn.dev/naonao70/articles/48d75bf2cc793e

■Pivotクラス(中間テーブルのモデル)
https://qiita.com/kkznch/items/72ff650737eff863e4d9

■Pivot中間テーブルに保存する方法【attach・sync・detach】
https://biz.addisteria.com/pivot_attach/

【DB関係】

■SQLのWHERE 1=1と WHERE 1=0
https://blog.hitsujin.jp/entry/2020/02/14/210000
※初期表示の時に、検索表示したくない時に1=0を使う。

■WITH句(副問い合わせ(サブクエリ)に名前を付けれる機能。
一時テーブルみたいなもの)
https://zukucode.com/2017/09/sql-with.html

■SQLトリガー
https://qiita.com/wanko5296/items/fa3620c48196acbd3ab6

■シーケンス
https://qiita.com/5zm/items/da82cec73e097d2a97d0

)SELECT setval('シーケンス名', (SELECT MAX(id) FROM 対象テーブル))

■SQLの「EXISTS」(存在判定/相関副問合せ)
「EXISTS」とは、先ほども言いましたが「サブクエリ」を扱う仕組みです。そしてそのサブクエリは「SELECT文で取得した情報を、他のSELECTやUPDATE処理で使用すること」を指します。
https://itsakura.com/sql-exists

■CASCADE: 親テーブルの行を削除または更新し、子テーブル内の一致する行を自動的に削除または更新します。
Laravelの外部キー制約でCASCADEを設定するときに使える新しいメソッド

■リストア:DBのデータを復元、修復、ダンプ:DBからデータを出力
→検証環境のDBをダンプして、ローカルのDBにリストアする

■DBのViewについて
SQLで利用されるビューは、「仮想テーブル」と考えてもらえば良いかと思います。
ユーザーが必要な部分だけを抜粋したり、各テーブルからユーザーがデータを参照しやすいように加工したビューを作成することが出来ます。

実体としてのデータは存在しませんが、ユーザーからはテーブル操作を行うのと同じ感覚で参照することが可能です。
→ビューの実体は「SELECT文」です。
https://style.potepan.com/articles/25504.html

■UNION(結果の結合:レコードの結合)
https://medium-company.com/sql-union/

■LEFT(文字列の切り取り)
https://sql55.com/t-sql/sql-server-built-in-string-function-1.php

■SQLでの変数名の使い方
http://www.code-magagine.com/?p=3092

■【MySQL】GROUP_CONCAT()を使ってみる
カラム名を文字列として、連結できる
https://www.softel.co.jp/blogs/tech/archives/3154

■MYSQLで「テキスト数字」を正しくソートできるようにする
https://office-obata.com/report/memorandum/post-5311/

■DBの実行履歴(実行中クエリの確認)
show processlist;

※kill プロセスID でクエリを強制終了できます。
https://www.wakuwakubank.com/posts/344-mysql-kill-query/

■INFULL関数
MySQLのIFNULL関数は、NULL値を他の文言に置き換えられる関数
https://style.potepan.com/articles/18643.html

SELECT IFNULL(カラム名, '置き換える値') FROM テーブル名;

■ROW_NUMBER関数
https://style.potepan.com/articles/23566.html#SQLROW_NUMBER

SELECT文の結果セットに対して、1〜の連番を振るための関数

ROW_NUMBER() OVER ( [ PARTITION BY [パーティションカラム], [パーティションカラム], ...] ORDER BY [ソートカラム], [ソートカラム], ... )

・パーティションカラム (PARTITION BY)
指定した場合は、結果セットをパーティションカラムで分割し、パーティション毎に1〜の連番を振ります。
パーティションカラムを指定しない場合、結果セット全体で1〜の連番を振ります。

・ソートカラム (ORDER BY)
パーティション内の行に連番を振る順序を指定します。ソートカラムの指定は必須で省略できません。

■CASE文
https://techplay.jp/column/1733

CASE 列名
    WHEN 1 THEN 結果1
    WHEN 2 THEN 結果2
    ...
    ELSE デフォルト結果
END

■MySQL の LPAD() 関数の使い方

LPAD(文字列, 長さ, 埋める文字)
LPAD(@str, 10, '0')

■COALESCE関数
指定したカラムがNULLだった場合にNULL値を指定した別の値に置き換えてくれる関数
https://programmingnote.jp/archives/1434

SELECT 
  id
  ,name
  ,price
  ,COALESCE(quantity,0) AS quantity 
FROM 
  purchase ;

◼️SQLチューニング
①駆動表を小さくする
②結合途中のデータの塊の範囲を小さくする(1回広げて条件を絞るのはNG)
③無駄な結合を省く
④インデックスが貼っている順にWhere、Order Byを指定
⑤検索インデックスがかかっていない箇所を見つけ対応

SQLで駆動表を小さくするためには、いくつかの方法があります。

1. 必要なカラムだけを選択する
必要なカラムだけを選択することで、駆動表のサイズを減らすことができます。不要なカラムを含めると、データ量が増え、パフォーマンスが低下します。
sql SELECT column1, column2 FROM table_name WHERE conditions;

2. WHERE句を使ってデータを絞り込む
WHERE句を使用して、必要なデータだけを抽出します。これにより、駆動表のサイズを減らすことができます。

SELECT column1, column2
FROM table_name
WHERE condition;

3. JOIN句を適切に使う
必要なデータを取得するために、JOIN句を適切に使用します。不要なテーブルを結合しないように気をつけます。

4. インデックスを使用する
インデックスを使用すると、クエリの実行速度が向上し、駆動表のサイズも減らすことができます。インデックスを作成する際には、頻繁にフィルタリングやソートに使用されるカラムに対してインデックスを設定します。

5. サブクエリを使う
サブクエリを使用して、一部のデータを事前にフィルタリングし、その結果をメインクエリで使用することで、駆動表のサイズを減らすことができます。

SELECT *
FROM (SELECT column1, column2 FROM table_name WHERE condition) subquery
WHERE additional_condition;

6. 結合の順序を最適化する
複数のテーブルを結合する際には、結合の順序を最適化することが重要です。一般的には、データ量が少ないテーブルを先に結合し、その後に大きなテーブルを結合することが推奨されます。

【Vscodeのプラグイン、設定】

■Trailing Spaces
テキスト内や文末にある、不要と思われる半角スペースに色をつけてくれる拡張機能です。

■空白文字(タブ、スペース)のエディター上での表示方法に関する設定
https://www.javadrive.jp/vscode/setting/index8.html

■タブキーを押したときにスペースに変換するのかに関する設定
https://www.javadrive.jp/vscode/setting/index9.html

■Better Comments(コメントをデコレーション)

■indent-rainbow(インデントの色付け)

■Japanese Language Pack for Visual Studio Code(Visual Studio Codeを日本語化する)
https://www.javadrive.jp/vscode/install/index4.html

■EvilInspector(テキスト内にある全角スペースを強調表示してくれる拡張機能)

■Git Graph(リポジトリのツリーをグラフィカルに表示)

■Todo Tree

■PHP Debug
※設定:【Laravel×Docker】XdebugでLaravelコンテナをデバッグ実行する方法
https://hiro8blog.com/how-to-debug-laravel-container-by-xdebug/#st-toc-h-6

■PHP Intelephense(PHPのコード補完やらコードチェック)
https://yama-itech.net/visual-studio-code-recommend-setting-php

■Laravel Extension Pack

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?