PHP関連のことを調べてみた

PHP関連のことを調べてみた

PDOってよくわからず使ってない?

## はじめに

PDOについて理解せず使っていたので今回PDO学びました。
使い方というよりPDOって何なのかを記事にしております。

基本ブラックボックスで使って問題ないものなので初学者は飛ばしてもいいと思います
自分も初学者でインプット目的で書いてるのであしからず。
ただ(細かくを書くことはできないが)参考にしていただけたら幸いです。

## そもそもPDOって何?
PDOは、PHP Data Objects の略で、
`「PHPでDBに接続するためのオブジェクト指向プログラム」`

※自分の解釈なので間違っているや、こういう解釈の方がいいなどあればご教授くださいまし。

脆弱性や柔軟性、拡張性がよいのでよく使われる。

脆弱性・・・SQLインジェクションをプリペアドステートメントを使うことで防ぐことができる。
柔軟性・・・DBが変わっても一部変更すればDBの切り替えに対応できる。
拡張性・・・エラーハンドリングなどのオプションを追加変更が容易

## PDOは、PHPのライブラリ

PDOはPHPのライブラリとして提供されているので
PHPのドキュメントに書かれている。
[PD

元記事を表示

PHP オブジェクト指向覚書き「超基礎」

## はじめに

プロパティやメソッドなどの超基本についてだけまとめました。
全部頑張って書こうと思いましたが
カプセル化、継承、staticなど先が見えず心が折れ、
とりあえず書いたところまでの投稿です。
初学者はまずここまで理解しようということで。

## オブジェクト指向とは

オブジェクト指向は
クラス(class)という設計書の中に
プロパティやメソッドなど(部品)をひとまとめにして
この設計書を元に作ったもののことをインスタンスという。
 
プロパティは変数、
メソッドは関数と認識して今のところは問題ない。
 
※自分が最初理解するのにわかりづらかったことは
何をオブジェクトと呼ぶのか?
この記事最後に話そうと思う。

## 基本的な使い方(プロパティ、メソッド)
 
“`diff_php

元記事を表示

【覚書き】PHPStanのレベル0では、関数に渡す引数の不足は確認するが超過は確認できない

# 初めに
PHPStanを使っている際、関数やメソッドに渡す引数が超過している場合にエラーを出してくれないという事象に当たりました。
備忘のためアウトプットします。

# PHPStanのレベル0
まず、レベル0の説明はこちら。

> basic checks, unknown classes, unknown functions, unknown methods called on `$this`, wrong number of arguments passed to those methods and functions, always undefined variables

> 基本的なチェック、不明なクラス、不明な関数、不明なメソッドの呼び出し$this、それらのメソッドと関数に渡される引数の数が間違っている、常に未定義の変数

`メソッドに渡せれる引数の数が間違っている`とあるので、引数の数が多い場合でもエラーを出してくれるのかと思っていました。

# レベル0では引数の超過を確認できない
検証のために以下のコードを作成し、解析にかけてみました。

“`php
cl

元記事を表示

サーバーをまたいでPHPからnode.jsを動かすサンプルコード

## 備忘録メモとして
レンタルサーバーに設置したフロントエンドから、別サーバー(VSP)に置いてあるNode.jsを動かしてデータを返すサンプルコード

テスト環境:XAMPP

### ファイル構成
“`
サーバー1(レンタルサーバー)
C:\xampp\htdocs\test1
call_run_node.php
index.php

サーバー2(VPSサーバー)
C:\xampp\htdocs\test2
run_node.php
script.js
“`
サンプルでは特に外部モジュールを使用していませんが、必要なモジュールがあればサーバー2側にインストールします。

## サーバー1
index.php:フロントエンド表示部分と実行ボタン
“`php





サーバー2のNod</p></blockquote> </blockquote> <aside class='widget widget-post'> <div class='tag-cloud-link'>PHP</div> <div class='tag-cloud-link'>Node.js</div> </aside> <div><a style='width:100%;' class='btn__link' href='https://qiita.com/Kasiri-git/items/27f7a58682782a8466cf'>元記事を表示</a></div> <h3 id="outline__5"><a href='https://qiita.com/koinunopochi/items/0f5323afae081aca8045'>Laravelで “A facade root has not been set.” というエラーが出た場合の対処法</a></h3> <blockquote><p>## 概要<br /> – Testを作成中に遭遇したことのないエラーが発生し、手間取ったため備忘録として記載する</p> <p>## 原因<br /> “`php<br /> @dataProvider<br /> “`<br /> こちらを利用する方法を誤っていた</p> <p>## 一通りの対策</p> <p>https://qiita.com/aminevsky/items/784573234d071c769288</p> <p>:::note info<br /> 少し古い記事ですが、`@dataProvider` を利用していない場合は一度こちらを試したのちに試す方が良いかもしれません<br /> :::</p> <p>## 対策</p> <p>“`php<br /> /**<br /> * @test<br /> * @dataProvider provideValidConditions<br /> */<br /> public function testValidConditions($condition, $expectedResult)<br /> {<br /> // 省略<br /> }</p> <p> public static function provideValidConditions()<br /> {<br /> return [<br /> // 省略<br /> ]; </p></blockquote> </blockquote> <aside class='widget widget-post'> <div class='tag-cloud-link'>PHP</div> <div class='tag-cloud-link'>Laravel</div> </aside> <div><a style='width:100%;' class='btn__link' href='https://qiita.com/koinunopochi/items/0f5323afae081aca8045'>元記事を表示</a></div> <h3 id="outline__6"><a href='https://qiita.com/koinunopochi/items/0daaf65c8fc10565a2bc'>PHPで日本語の文字数を正しくカウントする方法</a></h3> <blockquote><p>## 概要<br /> – バリデーションのテストをおこなったところ、日本語に対する正しい判定を行えていないことが分かった<br /> – 正しい判定方法を備忘録として残しておく</p> <p>## 理由</p> <p>“`php<br /> if (strlen($name) > 50) {<br /> “`<br /> もともとこのようにバリデーションを行っていたが、「あ」を50回繰り返したところエラーが発生してしまった</p> <p>>function strlen(string $string): int<br /> 文字列の長さを得る<br /> ><br /> >与えられた string の長さを返します。<br /> ><br /> >https://www.php.net/manual/function.strlen.php<br /> ><br /> >@param $string: 長さを調べる文字列。<br /> ><br /> >@return string の長さをバイト単位で返します。</p> <p>原因は単純で、バイト単位でカウントするため2倍カウントされてしまっていることが原因であった</p> <p>## 解決方法</p> <p>>function mb_strlen(<br /> string $string,<br /> string|null $encoding = null<br /> ): i</p></blockquote> </blockquote> <aside class='widget widget-post'> <div class='tag-cloud-link'>PHP</div> </aside> <div><a style='width:100%;' class='btn__link' href='https://qiita.com/koinunopochi/items/0daaf65c8fc10565a2bc'>元記事を表示</a></div> <h3 id="outline__7"><a href='https://qiita.com/sota_sota/items/a4a26ee634d3f107c3b3'>「同じ意味なのに別の名前のカラム」を統一して使う</a></h3> <blockquote><p>## はじめに<br /> タイトルのようなことはそんなにないと思う。<br /> なぜならテーブルのカラム名を変えた方が正しい判断だから。</p> <p>例えば<br /> `講座履歴テーブルのcourse_table_id`<br /> `講座情報テーブルのcourse_id`<br /> この二つは同じ意味で使われる為、統一するべき。<br /> けどカラムを変えられないケースもあるので今回この話題で記事を投稿する。</p> <p>## キーを作成する</p> <p>“`diff_php<br /> // テーブルのデータを取得する<br /> $table_array1 = SELECT * FROM …..;<br /> $table_array2 = SELECT * FROM …..;</p> <p>// $table_array2のキーを作成する<br /> foreach ($table_array2 as $loop_value) {<br /> $loop_value->course_id = $loop_value->course_table_id;<br /> }<br /> “`</p> <p>上記のコードのように<br /> ①foreach文で中身を展開<br /> ②左側に新しく追加したいキーを。右側に新しく追加するキーの値を書けばOK<br /> ※今回変更ではなく、新たにキーを追</p></blockquote> </blockquote> <aside class='widget widget-post'> <div class='tag-cloud-link'>PHP</div> <div class='tag-cloud-link'>キー変更</div> <div class='tag-cloud-link'>キー作成</div> </aside> <div><a style='width:100%;' class='btn__link' href='https://qiita.com/sota_sota/items/a4a26ee634d3f107c3b3'>元記事を表示</a></div> <h3 id="outline__8"><a href='https://qiita.com/sota_sota/items/169fd6f86c8a6c852dc6'>SQLではなく、PHPでページネーションを実装する。</a></h3> <blockquote><p> ページネーションを実装する際は<br /> 通常はSQLで取得する際にOFFSETとLIMITで取得するデータに制限をかけるが<br /> 今回はSQLではなくPHPでページネーションを実装する。<br />  <br />  <br /> この際にJOINを使って結合もせず、PHPでMERGEを行う。<br /> (独自関数をいじりたくないので無理やり。)<br /> ※フロント側も載せる。<br />  </p> <p> ### バック側実装<br /> “`diff_php<br /> $table_array1 = “独自関数でDBのデータを取得。”;<br /> $table_array2 = “独自関数でDBのデータを取得。”;<br /> $table_array3 = “独自関数でDBのデータを取得。”;</p> <p>// ひとつにまとめる<br /> $table_list = array_merge($table_array1, $table_array2, $table_array3);</p> <p>// 並び替え(DAYカラムで降順)<br /> $sort_value = array_column($table_list, ‘DAY’);<br /> array_multisort($sort_value, SORT_DESC, $table_list);</p> <p>/</p></blockquote> </blockquote> <aside class='widget widget-post'> <div class='tag-cloud-link'>PHP</div> <div class='tag-cloud-link'>ページネーション</div> </aside> <div><a style='width:100%;' class='btn__link' href='https://qiita.com/sota_sota/items/169fd6f86c8a6c852dc6'>元記事を表示</a></div> <h3 id="outline__9"><a href='https://qiita.com/office-shirado/items/ba23ad9e1a7a6da888de'>コミュニケーション型Web地図(Limit12、地図の伝言板)</a></h3> <blockquote><p>コミュニケーション型のWeb地図を2つ作ってみました。</p> <p>1つは、自由投稿型の「Limit12」(クチコミWeb地図)。<br /> もう一つは、グループ内情報共有型の「地図の伝言板」です。</p> <p>【Limit12】<br /> https://chosashi-data.org/shirado/limit12/</p> <p>【地図の伝言板】<br /> https://office-shirado.com/dengon/<br /> ![イメージ_01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/67836/f2d7870b-a7c0-9b01-7f24-fe3a5622dd98.png)<br /> ![イメージ_02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/67836/c54364a9-9c3a-cf3d-7ca7-2edb51b94eca.png)</p> <p>どちらとも、機能はシンプルで、Web地図上に、ダブルクリック(ダブルタップ)でメモを投稿(プロット)するだけです。</p> <p>「リミット</p></blockquote> </blockquote> <aside class='widget widget-post'> <div class='tag-cloud-link'>PHP</div> <div class='tag-cloud-link'>MySQL</div> <div class='tag-cloud-link'>MapLibre</div> </aside> <div><a style='width:100%;' class='btn__link' href='https://qiita.com/office-shirado/items/ba23ad9e1a7a6da888de'>元記事を表示</a></div> <h3 id="outline__10"><a href='https://qiita.com/dd7223dd/items/0d86334761efd2f21db9'>アクセス修飾子の使い分け</a></h3> <blockquote><p>## アクセス修飾子<br />  アクセス修飾子とはメソッドや変数のアクセスできる範囲を指定するもので、以下が存在します。</p> <p>| アクセス修飾子 | 同一クラス | サブクラス | すべて |<br /> |:-:|:-:|:-:|:-:|<br /> | public | 〇 | 〇 | 〇 |<br /> | protected | 〇 | 〇 | × |<br /> | private | 〇 | × | × |</p> <p> 私自身そうだったのですが、プログラムに触れて間もない頃はわざわざprotectedやprivateでアクセス権限を弱める理由が分からずとりあえず全部publicで書きがちだと思います。なので、今一度使い分けを整理していきます。</p> <p> 私が思うにアクセス修飾子の使い分けの観点は以下です。それぞれ説明していきます。</p> <p> ①外部に公開する情報を制限する。<br /> ②イミュータブルなオブジェクトを作るため。(今回割愛)<br /> ③継承の原則を守るため。</p> <p> ### 外部に公開する情報を制限する。<br />  呼び出し側と呼び出される側という関係を意識して、呼び出される側は呼び出し側に必要な情報のみを公開し、不必要な情報は隠蔽する。所謂カプセル化です。 </p></blockquote> </blockquote> <aside class='widget widget-post'> <div class='tag-cloud-link'>PHP</div> <div class='tag-cloud-link'>オブジェクト指向</div> <div class='tag-cloud-link'>アクセス修飾子</div> </aside> <div><a style='width:100%;' class='btn__link' href='https://qiita.com/dd7223dd/items/0d86334761efd2f21db9'>元記事を表示</a></div> <h3 id="outline__11"><a href='https://qiita.com/7mpy/items/2371c60a1e4d37de260a'>date(‘Ym’, strtotime(‘2024-08’))とdate(‘Ym’, strtotime(‘202408’))の罠</a></h3> <blockquote><p> `202408`は**Ym**と評価されるのではなく、**His**として評価されるので実行日の20時24分08秒になります。気をつけてください<br /> “`php<br /> date(‘Ym’, strtotime(‘2024-08’)) !== date(‘Ym’, strtotime(‘202408’))<br /> “`</p> <p>https://www.php.net/manual/ja/datetime.formats.php#:~:text=%27t%27%3F-,HH%20MM%20II,-%22040837%22%2C%20%22T191919%22 </p></blockquote> </blockquote> <aside class='widget widget-post'> <div class='tag-cloud-link'>PHP</div> <div class='tag-cloud-link'>初心者</div> <div class='tag-cloud-link'>Laravel</div> <div class='tag-cloud-link'>備忘録</div> <div class='tag-cloud-link'>PHP8</div> </aside> <div><a style='width:100%;' class='btn__link' href='https://qiita.com/7mpy/items/2371c60a1e4d37de260a'>元記事を表示</a></div> <h3 id="outline__12"><a href='https://qiita.com/aMASSO/items/ff2fb855c2b307997dc2'>VScodeプラグイン 各言語おすすめ</a></h3> <blockquote><p>VScodeの拡張機能について各言語ごとにまとめる</p> <p>## 共通</p> <p>### Japanese Language Pack<br />  日本語化するための言語化パック<br /> ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3879789/dab28482-ae62-81f6-c8c9-d89dad705f12.png)</p> <p>### Code Spell Checker<br /> スペルチェック<br /> ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3879789/b106fc87-20c2-9cf9-b235-b6c52f836d0e.png)</p> <p>### vscode-icons<br /> アイコン表示<br /> ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3879789/48d74c47-fa84-433c-461b-f448ab0c9157.p</p></blockquote> </blockquote> <aside class='widget widget-post'> <div class='tag-cloud-link'>Java</div> <div class='tag-cloud-link'>PHP</div> <div class='tag-cloud-link'>JavaScript</div> <div class='tag-cloud-link'>Laravel</div> <div class='tag-cloud-link'>VSCode</div> </aside> <div><a style='width:100%;' class='btn__link' href='https://qiita.com/aMASSO/items/ff2fb855c2b307997dc2'>元記事を表示</a></div> <h3 id="outline__13"><a href='https://qiita.com/aMASSO/items/bec59e73f0f4ac949e17'>Laravel PHPコマンドを使いこなす</a></h3> <blockquote><p>LaravelでのWebアプリケーションの作る際の初期段階として、migrationを使用したDB操作のやり方について随時更新していく</p> <p>### DBの作成<br /> migrationではDBの作成自体はすることができないため、PHPMyAddmin等でDBをあらかじめ作成しておく</p> <p>DB作成については[こちら](https://qiita.com/aMASSO/items/08e1ee8b2245d0f524e4)</p> <p>### テーブル作成<br /> “`<br /> php artisan make:model {table名} -m<br /> php artisan migration<br /> “`</p> <p>### ログイン機能の実装<br /> デフォルトのログイン機能を実装<br /> “`<br /> composer require laravel/ui<br /> php artisan ui bootstrap –auth<br /> npm install && npm run dev<br /> “` </p></blockquote> </blockquote> <aside class='widget widget-post'> <div class='tag-cloud-link'>PHP</div> <div class='tag-cloud-link'>Laravel</div> </aside> <div><a style='width:100%;' class='btn__link' href='https://qiita.com/aMASSO/items/bec59e73f0f4ac949e17'>元記事を表示</a></div> <h3 id="outline__14"><a href='https://qiita.com/amakai0406/items/5993ccbb83390a86016d'>未経験から独学でポートフォリオの完成まで【Laravel / MySQL】</a></h3> <blockquote><p># はじめに<br /> 2024年1月から独学でプログラミングの学習を始め、<br /> ポートフォリオが完成するまでにやってきたことをまとめたいと思います。</p> <p>## 目次</p> <p>1. ポートフォリオの紹介<br /> 1. 使用技術<br /> 1. 基本設計<br /> 1. 開発の進め方<br /> 1. 学び<br /> 1. 苦労したこと<br /> 1. 課題<br /> 1. 最後に</p> <p># 1. ポートフォリオの紹介</p> <p>◾️サービスの概要<br /> 農業体験イベントの情報や農業に関する知識をブログを通じて発信するサービスです。農業に興味のある方や新たに始めようとする方々に向けて、情報を提供します。</p> <p>![スクリーンショット 2024-09-09 17.56.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3835741/005d4dd2-1340-a46d-b48f-49337a03b780.png)</p> <p>◾️開発の背景<br /> 父の農業を手伝う中で、何か自分にもできることはないかと考え、このWebアプリケーションを作成しました。農業に挑戦したいがどこから始めればいいのか分からない人や、知識や技術を求めている</p></blockquote> </blockquote> <aside class='widget widget-post'> <div class='tag-cloud-link'>PHP</div> <div class='tag-cloud-link'>HTML</div> <div class='tag-cloud-link'>MySQL</div> <div class='tag-cloud-link'>AWS</div> <div class='tag-cloud-link'>Laravel</div> </aside> <div><a style='width:100%;' class='btn__link' href='https://qiita.com/amakai0406/items/5993ccbb83390a86016d'>元記事を表示</a></div> <h3 id="outline__15"><a href='https://qiita.com/il-m-yamagishi/items/92ada79e7eeb19040643'>PHPUnit 10 以降で withConsecutive を使いたい場合の 2 つの方法</a></h3> <blockquote><p>こんにちは。やまゆです。</p> <p>https://github.com/sebastianbergmann/phpunit/issues/5063</p> <p>PHPUnit 9 でモック用の `withConsecutive` メソッドが deprecated になり、 10 で削除されました。</p> <p>このメソッドは、同じメソッドを連続して呼ぶ場合のモック定義として有効でした。</p> <p>例えば、このような実装コードがあるとします。</p> <p>“`php<br /> <?php declare(strict_types=1); /** * @license Apache-2.0 */ namespace App; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Message\ResponseInterface; use Psr\Http\Server\MiddlewareInterface; use Psr\Http\Server\RequestHandlerInterface; use RuntimeException; final reado</p></blockquote> </blockquote> <aside class='widget widget-post'> <div class='tag-cloud-link'>PHP</div> <div class='tag-cloud-link'>PHPUnit</div> <div class='tag-cloud-link'>mockery</div> </aside> <div><a style='width:100%;' class='btn__link' href='https://qiita.com/il-m-yamagishi/items/92ada79e7eeb19040643'>元記事を表示</a></div> <h3 id="outline__16"><a href='https://qiita.com/sugichaaaan/items/944146ba2ad9abdea696'>【Laravel】NGワードを精度高く検知する機能を開発してみる</a></h3> <blockquote><p>こんにちは!<br /> サーバーサイドエンジニアからフルスタックエンジニアにテラ進化したいすぎちゃんです! :cat: </p> <p>今回はNGワードを**精度高くマスキング**する機能についてお話ししたいと思います!</p> <p>さて、このNGワードマスキング機能はどのような効果をもたらすでしょうか?</p> <p>– サービス利用者の心理的安全性の向上<br /> – カスタマーサポート対応の負担軽減<br /> – エンジニアによるデータベースクリーニング作業の削減<br /> ([実際に被害にあった人の声](https://qiita.com/nasuB7373/items/10bebd8e9f0b3331f348))</p> <p>などなど・・・<br /> まさに三方良しの機能と行っても過言ではありません。</p> <p>実際に配信サービスやオンラインゲームにも、NGワードに対してなんらかの処理をかける機能が搭載されています!</p> <p>:::note info<br /> – [**ニコニコ生放送**](https://dic.nicovideo.jp/a/%E3%83%8B%E3%82%B3%E3%83%8B%E3%82%B3%E7%94%9F%E6%94%BE%E9%80%81%3A%E9%81%8</p></blockquote> </blockquote> <aside class='widget widget-post'> <div class='tag-cloud-link'>PHP</div> <div class='tag-cloud-link'>API</div> <div class='tag-cloud-link'>Laravel</div> <div class='tag-cloud-link'>形態素解析</div> <div class='tag-cloud-link'>NGワード</div> </aside> <div><a style='width:100%;' class='btn__link' href='https://qiita.com/sugichaaaan/items/944146ba2ad9abdea696'>元記事を表示</a></div> <h3 id="outline__17"><a href='https://qiita.com/aMASSO/items/03e5d8a663d43e58ed1c'>環境構築メモ – Laravel編</a></h3> <blockquote><p>環境構築としてLaravelのセットアップについて記録しておく<br /> 今回はUbuntu上にLaravelをインストールする</p> <p>[Ubuntuのインストールはこちら](https://qiita.com/aMASSO/items/c436339ad183a9dbb545)<br /> [PHP・MySQLのインストールはこちら](https://qiita.com/aMASSO/items/08e1ee8b2245d0f524e4)</p> <p>### 1.nodeのインストール<br /> <font color="red">※sudo apt でインストールされるnodeは古い為、nvm(ノード バージョン マネージャー)でインストールする</font></p> <p>nvmインストール<br /> “`<br /> curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/master/install.sh | bash<br /> “`<br /> ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3879789/6ec66be</p></blockquote> </blockquote> <aside class='widget widget-post'> <div class='tag-cloud-link'>PHP</div> <div class='tag-cloud-link'>MySQL</div> <div class='tag-cloud-link'>Ubuntu</div> <div class='tag-cloud-link'>Laravel</div> </aside> <div><a style='width:100%;' class='btn__link' href='https://qiita.com/aMASSO/items/03e5d8a663d43e58ed1c'>元記事を表示</a></div> <h3 id="outline__18"><a href='https://qiita.com/rana_kualu/items/73fff711cdfc1dacced7'>【デレステ】レアアイドルは本当に均等に出現するのか15901人調べてみた</a></h3> <blockquote><p>アイドルマスター シンデレラガールズ スターライトステージ9周年おめでとうございます。</p> <p>https://x.com/imascg_stage/status/1830621726352572503</p> <p>ところで日課の納税をするたびに気になっていたことがあるんですよね。<br /> レアアイドルって本当にみんな均等に出現するんだろうか?</p> <p>![01.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26088/fa1f6c63-ff23-d04f-5316-537e6df0ece1.jpeg)</p> <p>デレステはガシャの出現率が全て表示されていまして、レアアイドルは全員0.825%で共通となっています。<br /> ただ毎日引いていると、なんとなくそうではない気がしてくるんですよね。<br /> 西園寺琴歌やクラリスはわりとよく見かけるし、逆に楊菲菲や兵藤レナなどはあんまり見ない気がします。<br /> これは単に記憶が偏っているだけなのでしょうか。<br /> それとも本当に何らかの偏りが発生していたりするのでしょうかね。</p> <p>調べてみたいですよね。<br /> しかし調査するにしても</p></blockquote> </blockquote> <aside class='widget widget-post'> <div class='tag-cloud-link'>PHP</div> <div class='tag-cloud-link'>ポエム</div> <div class='tag-cloud-link'>確率</div> <div class='tag-cloud-link'>デレステ</div> <div class='tag-cloud-link'>ガシャ</div> </aside> <div><a style='width:100%;' class='btn__link' href='https://qiita.com/rana_kualu/items/73fff711cdfc1dacced7'>元記事を表示</a></div> <h3 id="outline__19"><a href='https://qiita.com/solocomedian/items/35b77762c3647d482036'>新人PGのLaravel備忘録~論理削除の実装~</a></h3> <blockquote><p># はじめに<br /> こちらは筆者がLaravelに関する知識の定着を図るための投稿です。<br /> 以下の点にご注意ください<br /> * この記事の読者は私と同じ実務歴半年~1年程度の新人PGの方を想定しています<br /> * 記事内において間違いや冗長な説明が多々あることをご容赦ください<br /> * 公式ドキュメントと相違がある場合はそちらを参考にしてください<br /> * 公の場で記事を引用していただく場合は予めご連絡ください<br /> * コメント大歓迎です!!出来るだけ返信しようと思っております!!<br /> # 今回のテーマ<br /> この記事ではLaravelにおける論理削除の実装について具体的なコードを用いて説明します。[^1]</p> <p>:::note warn<br /> 今回の実装はlaravel8での実装となります。他のバージョン(特に5.x以前)で実装する際はコードが異なる可能性があるため[公式ドキュメント](https://laravel.com/docs/8.x/eloquent)の#Soft Deletingの項をご確認ください。<br /> :::<br /> [^1]:今回の記事はあくまでも「論理削除の実装」に関する記事であり、導入を推奨するものではありません。<br /> # 論理削除</p></blockquote> </blockquote> <aside class='widget widget-post'> <div class='tag-cloud-link'>PHP</div> <div class='tag-cloud-link'>MySQL</div> <div class='tag-cloud-link'>Laravel</div> <div class='tag-cloud-link'>mariadb</div> </aside> <div><a style='width:100%;' class='btn__link' href='https://qiita.com/solocomedian/items/35b77762c3647d482036'>元記事を表示</a></div> <h3 id="outline__20"><a href='https://qiita.com/aMASSO/items/08e1ee8b2245d0f524e4'>環境構築メモ – PHP・MySQL編</a></h3> <blockquote><p>環境構築としてPHP・MySQLのセットアップについて記録しておく<br /> 今回はUbuntu上にPHP・MySQLをインストールする</p> <p>[Ubuntuのインストールについてはこちら](https://qiita.com/aMASSO/items/c436339ad183a9dbb545)</p> <p>### 1.PHPインストール<br /> phpのバージョンを確認<br /> “`<br /> sudo apt show php<br /> “`<br /> ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3879789/b17f0361-bc6b-ad0f-b8ea-91c15700be5c.png)<br /> <br /> リポジトリを追加<br /> “`<br /> sudo apt install software-properties-common<br /> sudo apt-add-repository ppa:ondrej/php<br /> “`<br /> ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/</p></blockquote> </blockquote> <aside class='widget widget-post'> <div class='tag-cloud-link'>PHP</div> <div class='tag-cloud-link'>MySQL</div> <div class='tag-cloud-link'>Ubuntu</div> </aside> <div><a style='width:100%;' class='btn__link' href='https://qiita.com/aMASSO/items/08e1ee8b2245d0f524e4'>元記事を表示</a></div> </div> </section> <!-- 記事下シェアボタン --> <aside> <ul class="socialList"> <li class="socialList__item"><a class="socialList__link icon-facebook" href="http://www.facebook.com/sharer.php?u=https%3A%2F%2Fmiofactor.com%2F2024%2F09%2F15%2Fpost-36766%2F&t=PHP%E9%96%A2%E9%80%A3%E3%81%AE%E3%81%93%E3%81%A8%E3%82%92%E8%AA%BF%E3%81%B9%E3%81%A6%E3%81%BF%E3%81%9F" target="_blank" title="Facebookで共有"></a></li><li class="socialList__item"><a class="socialList__link icon-twitter" href="http://twitter.com/intent/tweet?text=PHP%E9%96%A2%E9%80%A3%E3%81%AE%E3%81%93%E3%81%A8%E3%82%92%E8%AA%BF%E3%81%B9%E3%81%A6%E3%81%BF%E3%81%9F&https%3A%2F%2Fmiofactor.com%2F2024%2F09%2F15%2Fpost-36766%2F&url=https%3A%2F%2Fmiofactor.com%2F2024%2F09%2F15%2Fpost-36766%2F" target="_blank" title="Twitterで共有"></a></li><li class="socialList__item"><a class="socialList__link icon-line" href="http://line.naver.jp/R/msg/text/?PHP%E9%96%A2%E9%80%A3%E3%81%AE%E3%81%93%E3%81%A8%E3%82%92%E8%AA%BF%E3%81%B9%E3%81%A6%E3%81%BF%E3%81%9F%0D%0Ahttps%3A%2F%2Fmiofactor.com%2F2024%2F09%2F15%2Fpost-36766%2F" target="_blank" title="LINEで送る"></a></li></ul> </aside> <!-- /記事下シェアボタン --> <!-- 記事下エリア[widget] --> <aside class="widgetPost widgetPost-bottom"><aside class="widget widget-post"><h2 class="heading heading-primary">タグ</h2><div class="tagcloud"><a href="https://miofactor.com/tag/%e3%81%9d%e3%81%ae%e4%bb%96/" class="tag-cloud-link tag-link-13 tag-link-position-1" style="font-size: 8pt;" aria-label="その他 (1個の項目)">その他</a></div> </aside></aside> <!-- /記事下エリア[widget] --> <!-- 関連記事 --> <aside class="related"><h2 class="heading heading-primary">関連する記事</h2><ul class="related__list"> <li class="related__item"> <a class="related__imgLink" href="https://miofactor.com/2024/04/17/post-32680/" title="Lambda関連のことを調べてみた"> <img src="https://miofactor.com/wp-content/uploads/2019/10/lambda-150x150.png" alt="Lambda関連のことを調べてみた" width="150" height="150" > </a> <h3 class="related__title"> <a href="https://miofactor.com/2024/04/17/post-32680/">Lambda関連のことを調べてみた</a> <span class="icon-calendar">2024.04.17</span> </h3> <p class="related__contents">目次 1. サーバレスアーキテクチャによる静的ウェブサイト構築2. LINEBOT でClaude 3 に問い合わせできるようにしてみる (Amazo[…]</p> </li> <li class="related__item"> <a class="related__imgLink" href="https://miofactor.com/2022/03/13/post-17378/" title="Node.js関連のことを調べてみた2022年03月13日"> <img src="https://miofactor.com/wp-content/uploads/2019/10/nodejs-150x150.png" alt="Node.js関連のことを調べてみた2022年03月13日" width="150" height="150" > </a> <h3 class="related__title"> <a href="https://miofactor.com/2022/03/13/post-17378/">Node.js関連のことを調べてみた2022年03月13日</a> <span class="icon-calendar">2022.03.13</span> </h3> <p class="related__contents">目次 1. Node.js のフレームワークの Fastify と WebSocket を利用可能にする fastify-websocket を軽く触[…]</p> </li> <li class="related__item"> <a class="related__imgLink" href="https://miofactor.com/2021/11/17/post-14448/" title="PHP関連のことを調べてみた2021年11月17日"> <img src="https://miofactor.com/wp-content/uploads/2019/10/php-150x150.png" alt="PHP関連のことを調べてみた2021年11月17日" width="150" height="150" > </a> <h3 class="related__title"> <a href="https://miofactor.com/2021/11/17/post-14448/">PHP関連のことを調べてみた2021年11月17日</a> <span class="icon-calendar">2021.11.17</span> </h3> <p class="related__contents">目次 1. BotUIでチャットボット開発(ツール編)2. git commit できず苦戦(Controller.phpにActionを追加しただけ[…]</p> </li> </ul></aside> <!-- /関連記事 --> <!-- コメント --> <!-- /コメント --> <!-- PVカウンター --> <!-- /PVカウンター --> </main> <!-- /l-main --> <!-- l-sidebar --> <div class="l-sidebar"> <aside class="widget"> <div class="searchBox"> <form class="searchBox__form" method="get" target="_top" action="https://miofactor.com/" > <input class="searchBox__input" type="text" maxlength="50" name="s" placeholder="記事検索"><button class="searchBox__submit icon-search" type="submit" value="search"> </button> </form> </div></aside><aside class="widget"><h2 class="heading heading-widget">Category</h2> <ul> <li class="cat-item cat-item-1"><a href="https://miofactor.com/category/other/">OTHER</a> </li> </ul> </aside><aside class="widget"><h2 class="heading heading-widget">Back number</h2> <ul> <li><a href='https://miofactor.com/2024/09/'>2024年9月</a></li> <li><a href='https://miofactor.com/2024/08/'>2024年8月</a></li> <li><a href='https://miofactor.com/2024/07/'>2024年7月</a></li> <li><a href='https://miofactor.com/2024/06/'>2024年6月</a></li> <li><a href='https://miofactor.com/2024/05/'>2024年5月</a></li> <li><a href='https://miofactor.com/2024/04/'>2024年4月</a></li> <li><a href='https://miofactor.com/2024/03/'>2024年3月</a></li> <li><a href='https://miofactor.com/2024/02/'>2024年2月</a></li> <li><a href='https://miofactor.com/2024/01/'>2024年1月</a></li> <li><a href='https://miofactor.com/2023/12/'>2023年12月</a></li> <li><a href='https://miofactor.com/2023/11/'>2023年11月</a></li> <li><a href='https://miofactor.com/2023/10/'>2023年10月</a></li> <li><a href='https://miofactor.com/2023/09/'>2023年9月</a></li> <li><a href='https://miofactor.com/2023/08/'>2023年8月</a></li> <li><a href='https://miofactor.com/2023/07/'>2023年7月</a></li> <li><a href='https://miofactor.com/2023/04/'>2023年4月</a></li> <li><a href='https://miofactor.com/2023/03/'>2023年3月</a></li> <li><a href='https://miofactor.com/2023/02/'>2023年2月</a></li> <li><a href='https://miofactor.com/2023/01/'>2023年1月</a></li> <li><a href='https://miofactor.com/2022/12/'>2022年12月</a></li> <li><a href='https://miofactor.com/2022/11/'>2022年11月</a></li> <li><a href='https://miofactor.com/2022/10/'>2022年10月</a></li> <li><a href='https://miofactor.com/2022/09/'>2022年9月</a></li> <li><a href='https://miofactor.com/2022/08/'>2022年8月</a></li> <li><a href='https://miofactor.com/2022/07/'>2022年7月</a></li> <li><a href='https://miofactor.com/2022/06/'>2022年6月</a></li> <li><a href='https://miofactor.com/2022/05/'>2022年5月</a></li> <li><a href='https://miofactor.com/2022/04/'>2022年4月</a></li> <li><a href='https://miofactor.com/2022/03/'>2022年3月</a></li> <li><a href='https://miofactor.com/2022/02/'>2022年2月</a></li> <li><a href='https://miofactor.com/2022/01/'>2022年1月</a></li> <li><a href='https://miofactor.com/2021/12/'>2021年12月</a></li> <li><a href='https://miofactor.com/2021/11/'>2021年11月</a></li> <li><a href='https://miofactor.com/2021/10/'>2021年10月</a></li> <li><a href='https://miofactor.com/2021/09/'>2021年9月</a></li> <li><a href='https://miofactor.com/2021/08/'>2021年8月</a></li> <li><a href='https://miofactor.com/2021/07/'>2021年7月</a></li> <li><a href='https://miofactor.com/2021/06/'>2021年6月</a></li> <li><a href='https://miofactor.com/2021/05/'>2021年5月</a></li> <li><a href='https://miofactor.com/2021/04/'>2021年4月</a></li> <li><a href='https://miofactor.com/2021/03/'>2021年3月</a></li> <li><a href='https://miofactor.com/2021/02/'>2021年2月</a></li> <li><a href='https://miofactor.com/2021/01/'>2021年1月</a></li> <li><a href='https://miofactor.com/2020/12/'>2020年12月</a></li> <li><a href='https://miofactor.com/2020/11/'>2020年11月</a></li> <li><a href='https://miofactor.com/2020/10/'>2020年10月</a></li> <li><a href='https://miofactor.com/2020/09/'>2020年9月</a></li> <li><a href='https://miofactor.com/2020/08/'>2020年8月</a></li> <li><a href='https://miofactor.com/2020/07/'>2020年7月</a></li> <li><a href='https://miofactor.com/2020/06/'>2020年6月</a></li> <li><a href='https://miofactor.com/2020/05/'>2020年5月</a></li> <li><a href='https://miofactor.com/2020/04/'>2020年4月</a></li> <li><a href='https://miofactor.com/2020/03/'>2020年3月</a></li> <li><a href='https://miofactor.com/2020/02/'>2020年2月</a></li> <li><a href='https://miofactor.com/2020/01/'>2020年1月</a></li> <li><a href='https://miofactor.com/2019/12/'>2019年12月</a></li> <li><a href='https://miofactor.com/2019/11/'>2019年11月</a></li> <li><a href='https://miofactor.com/2019/10/'>2019年10月</a></li> </ul> </aside> </div> <!-- /l-sidebar --> </div> <!-- /l-wrapper --> <div class="categoryBox"> <div class="container"> <h2 class="heading heading-primary"> <span class="heading__bg u-txtShdw bgc-darkgray">OTHER</span>カテゴリの最新記事 </h2> <ul class="categoryBox__list"> <li class="categoryBox__item"> <div class="eyecatch eyecatch-archive"> <a href="https://miofactor.com/2024/09/19/post-36890/"> <img src="https://miofactor.com/wp-content/uploads/2019/10/js-554x410.png" alt="JavaScript関連のことを調べてみた" width="554" height="410" > </a> </div> <ul class="dateList dateList-archive"> <li class="dateList__item icon-calendar">2024.09.19</li> </ul> <h2 class="heading heading-archive "> <a class="hc-darkgray" href="https://miofactor.com/2024/09/19/post-36890/">JavaScript関連のことを調べてみた</a> </h2> </li> <li class="categoryBox__item"> <div class="eyecatch eyecatch-archive"> <a href="https://miofactor.com/2024/09/19/post-36891/"> <img src="https://miofactor.com/wp-content/uploads/2019/10/java.jpg" alt="JAVA関連のことを調べてみた" width="540" height="270" > </a> </div> <ul class="dateList dateList-archive"> <li class="dateList__item icon-calendar">2024.09.19</li> </ul> <h2 class="heading heading-archive "> <a class="hc-darkgray" href="https://miofactor.com/2024/09/19/post-36891/">JAVA関連のことを調べてみた</a> </h2> </li> <li class="categoryBox__item"> <div class="eyecatch eyecatch-archive"> <a href="https://miofactor.com/2024/09/19/post-36894/"> <img src="https://miofactor.com/wp-content/uploads/2019/10/ios-554x410.png" alt="iOS関連のことを調べてみた" width="554" height="410" > </a> </div> <ul class="dateList dateList-archive"> <li class="dateList__item icon-calendar">2024.09.19</li> </ul> <h2 class="heading heading-archive "> <a class="hc-darkgray" href="https://miofactor.com/2024/09/19/post-36894/">iOS関連のことを調べてみた</a> </h2> </li> <li class="categoryBox__item"> <div class="eyecatch eyecatch-archive"> <a href="https://miofactor.com/2024/09/19/post-36888/"> <img src="https://miofactor.com/wp-content/uploads/2019/10/rails-725x410.png" alt="Rails関連のことを調べてみた" width="725" height="410" > </a> </div> <ul class="dateList dateList-archive"> <li class="dateList__item icon-calendar">2024.09.19</li> </ul> <h2 class="heading heading-archive "> <a class="hc-darkgray" href="https://miofactor.com/2024/09/19/post-36888/">Rails関連のことを調べてみた</a> </h2> </li> <li class="categoryBox__item"> <div class="eyecatch eyecatch-archive"> <a href="https://miofactor.com/2024/09/19/post-36884/"> <img src="https://miofactor.com/wp-content/uploads/2019/10/lambda.png" alt="Lambda関連のことを調べてみた" width="360" height="230" > </a> </div> <ul class="dateList dateList-archive"> <li class="dateList__item icon-calendar">2024.09.19</li> </ul> <h2 class="heading heading-archive "> <a class="hc-darkgray" href="https://miofactor.com/2024/09/19/post-36884/">Lambda関連のことを調べてみた</a> </h2> </li> <li class="categoryBox__item"> <div class="eyecatch eyecatch-archive"> <a href="https://miofactor.com/2024/09/19/post-36886/"> <img src="https://miofactor.com/wp-content/uploads/2019/10/python-640x410.png" alt="Python関連のことを調べてみた" width="640" height="410" > </a> </div> <ul class="dateList dateList-archive"> <li class="dateList__item icon-calendar">2024.09.19</li> </ul> <h2 class="heading heading-archive "> <a class="hc-darkgray" href="https://miofactor.com/2024/09/19/post-36886/">Python関連のことを調べてみた</a> </h2> </li> </ul> </div> </div> <!-- schema --> <script type="application/ld+json"> { "@context": "http://schema.org", "@type": "Article ", "mainEntityOfPage":{ "@type": "WebPage", "@id": "https://miofactor.com/2024/09/15/post-36766/" }, "headline": "PHP関連のことを調べてみた", "image": { "@type": "ImageObject", "url": "https://miofactor.com/wp-content/uploads/2019/10/python-640x410.png", "height": "410", "width": "640" }, "datePublished": "2024-09-15T16:40:52+0900", "dateModified": "2024-09-15T16:40:52+0900", "author": { "@type": "Person", "name": "editor" }, "publisher": { "@type": "Organization", "name": "f@ctor", "logo": { "@type": "ImageObject", "url": "", "width": "", "height":"" } }, "description": "目次 1. PDOってよくわからず使ってない?2. PHP オブジェクト指向覚書き「超基礎」3. 【覚書き】PHPStanのレベル0では、関数に渡す引数の不足は確認するが超過は確認できない4. サーバーをまたいでPHPからnode.jsを動かすサンプルコード5. Laravelで “A facade root has not been set.” というエラーが出た場合の対 […]" } </script> <!-- /schema --> <!--l-footer--> <footer class="l-footer"> <div class="container"> <div class="pagetop u-txtShdw"><a class="pagetop__link" href="#top">Back to Top</a></div> <div class="widgetFoot"> <div class="widgetFoot__contents"> </div> <div class="widgetFoot__contents"> <aside class="widget widget-foot"><h2 class="heading heading-footer">タグ</h2><div class="tagcloud"><a href="https://miofactor.com/tag/%e3%81%9d%e3%81%ae%e4%bb%96/" class="tag-cloud-link tag-link-13 tag-link-position-1" style="font-size: 8pt;" aria-label="その他 (1個の項目)">その他</a></div> </aside> </div> <div class="widgetFoot__contents"> </div> </div> <div class="copySns "> <div class="copySns__copy"> © Copyright 2024 <a class="copySns__copyLink" href="https://miofactor.com">f@ctor</a>. <span class="copySns__copyInfo u-none"> f@ctor by <a class="copySns__copyLink" href="http://fit-jp.com/" target="_blank">FIT-Web Create</a>. Powered by <a class="copySns__copyLink" href="https://wordpress.org/" target="_blank">WordPress</a>. </span> </div> </div> </div> </footer> <!-- /l-footer --> <script type="text/javascript" src="https://miofactor.com/wp-includes/js/comment-reply.min.js?ver=6.4.1" id="comment-reply-js" async="async" data-wp-strategy="async"></script> <script type="text/javascript" src="https://miofactor.com/wp-includes/js/wp-embed.min.js?ver=6.4.1" id="wp-embed-js" defer="defer" data-wp-strategy="defer"></script> <script> function toggle__search(){ extra__search.className="l-extra"; extra__menu.className="l-extraNone"; menuNavi__search.className = "menuNavi__link menuNavi__link-current icon-search "; menuNavi__menu.className = "menuNavi__link icon-menu"; } function toggle__menu(){ extra__search.className="l-extraNone"; extra__menu.className="l-extra"; menuNavi__search.className = "menuNavi__link icon-search"; menuNavi__menu.className = "menuNavi__link menuNavi__link-current icon-menu"; } </script><script>Array.prototype.forEach.call(document.getElementsByClassName("css-async"),function(e){e.rel = "stylesheet"});</script> </body> </html>