- 1. Laravelのテストコードでマテリアライズド・ビューのテーブルに対するクエリのテストをする
- 2. PHPとMySQLの接続方法をわかりやすく解説【初心者向け】
- 3. [PHP] 可読性0の短めなbase64エンコード・デコード関数 (v2)
- 4. LaravelでGemini APIを使おう
- 5. 【PHP/Docker/Twig】初めて生PHPのアプリケーション作成してみた【Pスク生必見!?】
- 6. Mac OSユーザーのための必須ソフトウェア
- 7. PHP8.0復活!Homebrewのicu4cバージョンアップに対応する方法
- 8. 高いジムなのに休館しててムカついた勢いでWebアプリリリースした話
- 9. WordPressをローカル環境でDockerを使って一瞬で動かす備忘録
- 10. PhpStormで空行の空白が勝手に削除される 👿【Settings/Preferences | Editor | General | Remove trailing spaces on:】
- 11. [Dompdf] LaravelでPDFを出力する
- 12. 静的なLPをdistをルートとして確認する
- 13. WordPress Contact Form 7 で問い合わせ種別に応じて複数の宛先に管理者向けメールを送る方法
- 14. エロ画像検出APIを用いてエロ画像のアップロードを阻止してみる【後編】
- 15. Laravel8 新規作成したプロジェクトのMySQLにログインする方法
- 16. Laravelのソート操作:usort、sortBy、orderByの違い
- 17. XserverでPHPのバージョンを上げる時に困った話
- 18. php-fpmの設定ファイルの場所を探す
- 19. ①Laravelのクエリビルダー
- 20. 投稿アプリで本人以外が記事を削除できなくする (Laravel)
Laravelのテストコードでマテリアライズド・ビューのテーブルに対するクエリのテストをする
業務でマテリアライズド・ビューのテーブルに対して、クエリを実行する関数のLaravelのフレームワークを使ったテストを書きたいとなったときに迷ったので備忘録のために残しておきます。
珍しいケースかなとは思うものの、実際やってみるとそんなに難しくなかったのという感じでした。ただ、マテリアライズド・ビューのもとになるSQLクエリが複雑だと元データの作成は大変なのでそこのハードルはあるなと思いました。
# マテリアライズド・ビューとは?
本来、SQLのビューは実体を持たない仮想テーブルのようなもので、SELECT文などで生成されます。
マテリアライズド・ビューはその点、実体を持つビューでクエリの結果をテーブルとして作成できる仕組みです。このテーブルは登録、更新、削除などはできず、読み込みのみできるテーブルとなっており、通常のテーブルとは少し異なります。
参考
https://products.sint.co.jp/siob/blog/materializedview#:~:text=%E3%83%9E%E3%83%86%E3%83%AA%E3%82%A2%E3%83%A9%E
PHPとMySQLの接続方法をわかりやすく解説【初心者向け】
# 1.はじめに
この記事では、PHPを使ってMySQLデータベースに接続する方法を解説します。
PHPの基本的な知識がある方、データベース接続に挑戦したい初心者の方は是非ご覧ください。# 2.PHPとMySQLの接続とは?
まずデータベースとは何か、PHPがどのようにデータベースと通信するのかについて簡単に説明します。
接続方法として「PDO(PHP Datta Objects)」と「MySQLi」の2つの接続方法があります。
今回はより汎用的で推奨されているPDOを使用します。# 3.PHPでのMySQL接続コードの解説
### 3.1 PDOを使用した接続方法
“`PHP:php
try {
$dsn = ‘mysql:host=localhost;dbname=test_db;charset=utf8’;
$username = ‘root’;
$password = ”;
$option = [
PDO::ATTR_ERRMODE => PDO::ERRRMODE_EXCEPTION,
PDO::AT
[PHP] 可読性0の短めなbase64エンコード・デコード関数 (v2)
この記事は、以下の記事に書いたやつがさすがにゴミだったので、その改訂版です
https://qiita.com/UziDeer/items/a624bf1b06c17fc24fee
“`b64fn.php
$b64Arr = array_merge(range(“A”, “Z”), range(“a”, “z”), range(“0”, “9”), [“+”, “/”]);function b64safe(string $b64, bool $dec = false, array $rep = [[“+”, “/”, “=”], [“.”, “_”, “-“]]):string {
return str_replace($rep[(int) $dec], $rep[(int) !$dec], $b64);
}function blockPad(string $str, string $pad, int $len, bool|int $right = false) {
$i = 0;
while
LaravelでGemini APIを使おう
## はじめに
ChatGPTもいいけどGeminiもアツいよね、ということで使おうとしたのですがどうにも資料が少なくずいぶん苦労したのでやり方をまとめました。## 環境
“`
$ php -v
PHP 8.2.20 (cli) (built: Jun 4 2024 13:22:51) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.2.20, Copyright (c) Zend Technologies
with Zend OPcache v8.2.20, Copyright (c), by Zend Technologies$ php artisan –version
Laravel Framework 11.22.0
“`## 手順
### 1. Google Cloud Platformへの登録&APIキーの発行
・[Google Cloud Platform](https://console.cloud.google.com/)にユーザ登録
・「APIとサービス」の「Generative Lang
【PHP/Docker/Twig】初めて生PHPのアプリケーション作成してみた【Pスク生必見!?】
# はじめに
初めまして。Ricccckです。私は、ReactやJavaScriptには、以前触れたことがあるのですが、今回は、初めてのバックエンド言語。初めてPHPに触れ、わからないこと、難しいことも多くありました…。
そんな中で、初めてアプリケーションを作成したので、今回は、その備忘録を書き留めておこうと思います。
この記事では、コードの詳しい内容までは触れず、「全体のモデルの話」や「コードの書き方」に注目して記事をまとめていきます。DockerとPHPの連携、GDライブラリの使用などで詰まった点もあったので、他の初学者の方に、少しでも参考になればと思います!
今は、twigを用いたフロント実装はあまりないかとも思いますが、Laravelではない **「生のPHP」** を触る機会がある場合には、うってつけの教材になると思いますので、ぜひ触れてみてください。
以下敬略にて失礼します。
# ビルドイメージ
### ロゴ画像
Mac OSユーザーのための必須ソフトウェア本日のテーマは、Mac OSにインストールすべき必須ソフトウェアです。オフィス、動画、システムに関する日常使用のための生産性ツールをいくつかご紹介します。
役に立ったら、いいねとフォローをお願いします。
## 効率ツール
[Homebrew](https://brew.sh/)
Homebrewは、コマンドラインのパッケージ管理ツールで、サードパーティのソフトウェアパッケージを簡単に管理できるように設計されています。macOSだけでなくLinuxにも対応しており、ユーザーにシンプルなインストールと管理体験を提供します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3878716/e25a5800-f04c-eaab-44e2-4a5500413129.png)[ServBay](servbay.com)
ServBayは、開発者向けのワンストップ開発環境管理ツールです。その主な目的は、開発環境の設定と維持のプロセスを簡素化し、開発者が環境の構成に多くの時間を費やすことなく、すぐ
PHP8.0復活!Homebrewのicu4cバージョンアップに対応する方法
# Mac の Homebrew で入れた PHP8.0 が使えなくなったので対処してみた
最近、PHP8.3 にアップデートしたら、突然 PHP8.0 が使えなくなったんです。どうやら、icu4c が 74 に依存するようになってしまい、PHP8.0 では icu4c のバージョンが 73 じゃないとダメみたい。なので、ちょっとした対処方法をシェアします!
## エラーの発生
まず、ターミナルで `php -v` コマンドを叩いたらこんなエラーが出ました。
“`bash
$ php -v
dyld[660]: Library not loaded: /opt/homebrew/opt/icu4c/lib/libicuio.73.dylib
Referenced from: <139D175A-03FF-30B0-926E-B3B5282021FF> /opt/homebrew/Cellar/php@8.0/8.0.30_1/bin/php
Reason: tried: ‘/opt/homebrew/opt/icu4c/lib/libicuio.73.
高いジムなのに休館しててムカついた勢いでWebアプリリリースした話
## 自己紹介
皆様はジムに行かれてますでしょうか。私は健康を目指して週3で通っております。
大学生のときに、某24hジムでバイトしていたことをきっかけにジムに通い始めました。
その習慣は6年後の今でも続いており、転職を機に最高峰のジムと謳われるゴールドジムに転入しました。
しかし、ゴールドジムは会費が高いです。普通の24hジムの3〜4倍はするんじゃないでしょうか。## ゴールドジムの問題点
早速ですが、ゴールドジムに文句をつけていきます。
ペルソナ設定ってやつです。ゴールドジムには、休館日があります。
運営の視点からすれば、その間に掃除をしたり、スタッフの方もお休みも必要ですから、なんら問題はありません。でも、私は夜型です!22時からやる気が出るのです。
そのため、普段は営業時間の長い大阪付近のゴールドジムで汗を流しています。
ジュラシック木澤さん や なかやまきんに君、横川くんの動画を見なから、フガフガとシムの前までくると。**「本日は閉館しました。」**
![スクリーンショット 2024-09-04 21.28.45.png](https://qiita-im
WordPressをローカル環境でDockerを使って一瞬で動かす備忘録
普段Wodpress関連をローカルで開発するときには、WSL2環境でApacheを使って行っています。
しかし、訳あってdockerで動かす必要があったのでその時の備忘録です。正直、難しいんだろうな・・・
呪文の書(dcoker-compose.yml)かけるかな・・・
と不安だったのですが、 **一瞬でした。**
`docker-compose.yml`の書き方は後で覚える!今は開発環境作るのが先やで!という方はコピペ爆速でいけるはずです。
是非どうぞ!# 環境
– WSL2
– Docker Desktop for Windows
– WordPress最新
– MySQL# 爆速を求めてるあなたに
何も気にせず次の通りにしてください。
1. Dockerを起動(私はDocker Desktop for Windowsを使ってます)
1. プロジェクトを置きたいディレクトリに`dcoker-compose.yml`ファイルを作成
1. `docker-compose.yml`に以下をコピペ
“` docker-compose.yml
version:
PhpStormで空行の空白が勝手に削除される 👿【Settings/Preferences | Editor | General | Remove trailing spaces on:】
原因はこいつじゃない
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435735/8647dd3c-c816-7019-64ce-9c29c5e0a3a8.png).editorconfigが原因
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435735/71f06f51-d726-c2fc-d5f7-233d5c204cc4.png)
“`ini:.editorconfig
root = true[*]
charset = utf-8
end_of_line = lf
insert_final_newline = true
indent_style = space
indent_size = 4
trim_trailing_whitespace = true ←削除するよ[*.md]
trim_trailing_whitespace = false[*.{yml,
[Dompdf] LaravelでPDFを出力する
# 導入
これまでlaravelでPDFを出力する際にはlaravel-snappyを使用していました。
しかし、laravel-snappyを使うためのwkhtmltopdfのサポートが2023年に切れてしました😭😭代替としてDompdfを使用することになったので、導入手順をまとめようと思います。
https://github.com/dompdf/dompdf
動作環境:Docker, laravel 10
# インストール
“`bash
# dompdfをインストール
composer require dompdf/dompdf# config/dompdf.phpを作成
php artisan vendor:publish –provider=”Barryvdh\DomPDF\ServiceProvider”
“`# 基本設定
#### 1.app.phpのproviders, aliasesへそれぞれ追加
“`app.php
‘providers’ => [
.
.
.
\Barryvdh\DomPDF\Servic
静的なLPをdistをルートとして確認する
静的なLPをつくってるとルート相対パスなどサーバー上げないと確認できないことがある。
phpでlocalhost:8000でサーバー起動して確認できる!“`
npm run build
cd dist
php -S localhost:8000
“`http://localhost:8000/
WordPress Contact Form 7 で問い合わせ種別に応じて複数の宛先に管理者向けメールを送る方法
# はじめに
問い合わせ種別に応じて、各担当のメールアドレス宛にメールを送りたいこと、あると思います。
Contact Form 7は以下のようにプルダウンのvalueにメールアドレスを設定すれば、やりたいことが出来るには出来るのですが…“`php
[select* type id:type class:form-select include_blank “イベントに関する問い合わせ|test+event@example.co.jp” “求人に関する問い合わせ|test+recruit@example.co.jp” “ホームページに関する問い合わせ|test+web@example.co.jp” “その他|test+etc@example.co.jp”]
“`valueにメールアドレスの一覧を羅列するのって結構抵抗ありませんか? 私はあります。
担当のメールアドレスが変わったら、メンテナンスが大変ですし、
担当のメールアドレスが複数あったら、実装も大変になります。なので、Wordpress管理画面にオプション画面を設置し、
問い合わせ種別に応じて、それぞれ複数のメー
エロ画像検出APIを用いてエロ画像のアップロードを阻止してみる【後編】
こんにちは!すぎちゃんです!
今回は前編に引き続き、Fargateコンテナと連携をした「エロ画像防止機能」をlaravelで作っていこうと思います! :muscle:
こちらの記事にも「いいね :heart: 」よろしくお願いします!
:::note info
[エロ画像検出APIを用いてエロ画像のアップロードを阻止してみる【前編】](https://qiita.com/sugichaaaan/items/738867e4bc3a1a0077d9)
:::## :file_folder: ディレクトリ構造
今回の実装で使用する、クラス、bladeファイルを一挙公開いたします!
srcを起点にtreeを起動してしまうと枠に収まりきらなくなるので、直下のappディレクトリ、resourcesディレクトリでそれぞれコマンドを叩きファイル構造を可視化しました。
`(省略)`と末尾についているディレクトリについては、今回のエロ画像検出機能とは関係がないので配下のディレクトリ、及びファイルの表示は控えさせていただきます:sweat_drops:
### [src/ap
Laravel8 新規作成したプロジェクトのMySQLにログインする方法
# 前提
以下のコマンドを実行し、Laravel8のプロジェクトを作成していること
“`
composer create-project laravel/laravel {プロジェクト名} “8.*” –prefer-dist
“`# MySQLのサーバー起動
“`
$ sudo mysql.server start
“`# ログインコマンド実行
“`
$ sudo mysql -u {ユーザ名} -h {ホスト名} -p
“`
.env の初期値から特に変更していないため、ユーザ名は「root」ホスト名は「localhost」を指定
正しいパスワードを入力するとログインに成功する
“`
$ sudo mysql -u root -h localhost -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 8.1.0 HomebrewCopyright (c) 200
Laravelのソート操作:usort、sortBy、orderByの違い
Laravelでは、データの並べ替え(ソート)を行うためのいくつかの方法があります。
– PHPのusort関数
– Laravel独自のsortByメソッド
– クエリビルダのorderByメソッド本記事では、それぞれの使い所を紹介します。
## usortとは?
usortは、PHPの組み込み関数であり、ユーザー定義の比較関数に基づいて配列をソートするために使用されます。シンプルなソートから複雑なカスタムロジックに基づくソートまで、柔軟に対応できるのが特徴です。### usortの基本的な使い方
“`php
usort($array, ‘callback’);
“`– **$array:** ソート対象の配列、usortはこの配列を直接変更します
– **’callback’:** 2つの要素を比較するためのユーザー定義の比較関数。この関数は次の値を返します:
– 負の整数($a < $b の場合) - 正の整数($a > $b の場合)
– 0($a == $b の場合)
### usortを使った例
配列内のオブジェクトを特定のプロパテ
XserverでPHPのバージョンを上げる時に困った話
# はじめに
こんにちは、エンジニアのkeitaMaxです。
今回はXserverでPHPのバージョンが上げられなくて困ったことについて備忘録として書きます。
# 困ったこと
XserverのサーバパネルでPHPのバージョンを上げたが、コマンドでPHPのバージョンを確認したら上がってなくて困りました。
![スクリーンショット 2024-08-29 13.06.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3715123/1c1fb5e8-5c3e-b435-a167-83680c8350e0.png)
“`
$ php -v
PHP 8.1.22 (cli) (built: Aug 15 2023 11:02:44) (NTS)
“`# 解決策
`/usr/bin/`にあるphpのシンボリックリンクを修正したら直りました。
“`:/usr/bin/
$ unlink php
$ ln -s /usr/bin/php8.2 php
“`“`
$ php -v
PH
php-fpmの設定ファイルの場所を探す
`php-fpm -t` コマンドで探す
“`
$ docker run php:8.3-fpm php-fpm -t
[01-Sep-2024 19:57:29] NOTICE: configuration file /usr/local/etc/php-fpm.conf test is successful
“`“`
$ docker run php:8.3-fpm ls /usr/local/etc/php-fpm.conf
/usr/local/etc/php-fpm.conf
“`見つかりました!
## 補足
“`
$ docker run php:8.3-fpm php-fpm -h
Usage: php [-n] [-e] [-h] [-i] [-m] [-v] [-t] [-p] [-g ] [-c ] [-d foo[=bar]] [-y ] [-D] [-F [-O]]
-c| Look for php.ini file in this directory
①Laravelのクエリビルダー
## クエリビルダーとは
SQLの命令文(クエリ)を作成して実行するための機能## やりたいこと
・各月ごとに投稿されたブログ数の集計まず
“`
$blogCounts = DB::table(‘blogs’)
“`
Laravelのクエリビルダーを使用してblogsテーブルに対してクエリを構築します“`
->select(
DB::raw(“DATE_FORMAT(created_at, ‘%Y-%m’) as month”),
DB::raw(“COUNT(*) as blog_count”)
)
“`
DB::raw 生のSQLを直接クエリへ組み込むために使用します
created_atを’2024-09-01 12:34:56’→’2024-09’として、monthというエイリアスにし、
その月のブログ投稿数をカウントして、blog_countというエイリアスにします※DATE_FORMAT 関数を使用すると引数に指定した日付を
指定のフォーマットで整形した文字列にして取得することができます“`
->groupBy(DB
投稿アプリで本人以外が記事を削除できなくする (Laravel)
## はじめに
Laravel学習の一環でBreezeを利用した簡単な記事投稿アプリを作成しました。
その際、投稿した本人以外が記事を編集・削除できないようにする機能を実装してみたので、備忘のため記事に残します。## 完成イメージ
投稿した本人の場合 → 編集・削除ボタンが表示される
![スクリーンショット 2024-09-01 19.17.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3362317/93182f55-f314-b928-a983-3545a0367a58.png)投稿した本人**以外**の場合 → ボタンが表示されない
![スクリーンショット 2024-09-01 19.19.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3362317/e37fb7a5-5de7-9d3e-3985-30f83564ccd5.png)## 実装フロー
1. ビューに記事の投稿者を確認するロジッ