PHP関連のことを調べてみた2020年05月10日

PHP関連のことを調べてみた2020年05月10日

SQLから当日分のデーターを入手したい時

ポートフォリオ作成時に当日投稿された数を表記する機能を実施しようとして苦戦したので、忘備録として残しておく

やりたい事はその日に投稿された投稿数をカウントしてその数を表示するという物

DBに保存されている投稿日時はDATETIME型で保存されている。
ならば当日の日付と投稿日時の日付が同じという条件付けでいけるだろうと安易に以下のコードを作成

カラム:creat_time DATETIME型

$counts = $db->query(‘SELECT COUNT(*) AS cnt FROM posts WHERE create_time = CURDATE()’);
$todayCount = $counts->fetch();

反映されない・・・・・・

何故だ・・・と2時間ほどネットの海を彷徨っていると、
DATETIME型は「2020-05-08 21:33:54」のように日付と時刻までを取得する
それに対してCURDATEは「2020-05-08」と時刻は取得されない。という情報を発見

もうちょい調べるとCURDATEではなく日付を直接入力した場合、
 2020

元記事を表示

Laravelで.envファイルが反映されない時

Illuminate\Database\QueryException : SQLSTATE[HY000] [2002] Connection refused..

などのエラーが出た際、.envファイルがうまく反映されていないことが原因の可能性があります。

## .envファイルが反映されない時の対処法

キャッシュをクリアすることで.envファイルが正しく反映されるようになります。

“`
php artisan cache:clear
“`

コンフィグの設定もコマンドでキャッシュをクリアできます。

“`
php artisan config:cache
“`

元記事を表示

PDOでMySQLとの接続が切れた際に再接続する

PHP で MySQL に接続する際に PDO を使う場合、 MySQLi と比べて不便なのがDBとの接続が切れたときの再接続。

MySQLi の場合なら [mysqli::ping](https://www.php.net/manual/ja/mysqli.ping.php) があるのですが、PDO には無い。

なので、自前で似たようなものを作って対応する。

# 再接続する意味

そもそも、なんで再接続なんかが発生するのか?

これは、環境と実行する内容によるのでなんとも言えないが、下記のような構成の処理の場合には比較的頻繁に発生すると思う。

– phpスクリプト と DB が別なサーバーにある
– ループ回数が多い(数十万回とか)
– ループで処理される内容の中に DB での処理とは別な時間のかかる処理がある
– DB のタイムアウトの設定が短め

前に、[MySQL server has gone away の時は wait_timeout](https://qiita.com/YKInoMT/items/1be4b52430cbe48913e4) でも書いたように、ti

元記事を表示

Laravel 7.xで初めてアプリケーションを作ってみる。その1 SNS認証

## はじめに
[Laravelを知らない中級(中年)プログラマーがマイグレーションファイルの仕組みを調べてみたけど全くわからない](https://qiita.com/xioncc/items/1dcec2fbe3485b7e769a) という記事がまだ途中なのですが、せっかく少しだけLaravelのことがわかってきたので小さなアプリケーションでも作ってみようと思います。

## 前提
僕は「**Laravel**」はクイックスタートを数回読んだくらいで全く利用経験がありません。普段から使ってる方からしたら見当違いな事を書くかもしれません。
この記事の対象は PHP 中級者でLaravel未経験者及び初心者を想定しています。PHPの基礎的なシンタックスの説明とかは割愛しますのでご了承ください。
今回は認証がテーマですが、 [Laravel Socialite](https://github.com/laravel/socialite) の説明を読んでその通りに組んでみただけです。ソースも追っていませんしリクエストやレスポンスもチェックしていません。本格運用に使った際の事故などの保証は

元記事を表示

PHPで初めてのWebアプリケーション開発 実装方法の検討 備忘録3 

#前提
PHPを使ったWebアプリケーションの開発知識が必要になったので、開発過程の備忘録、知識のインプット・アウトプットを目的としている。

##アプリケーションの概要
アプリケーション名「なな板」
スケジュール・出欠管理アプリ

##実装したい機能
– 新規ユーザ登録
– ログイン機能
– プロフィール編集
– スケジュール追加・編集
– スケジュールに対する出欠登録
– スケジュールに対する出席表
– ユーザ一覧表示

#備忘録3 目次
– 機能の実装方法の検討
– 開発手順の検討
– HTML/CSSで骨格の作成

#機能の実装方法
###アプリケーションの表示部分
HTML/CSSで骨格の部分を作る

###機能の実装方法
PHPのフレームワークである「Laravel」を利用して実装する。

#開発手順(予定)
1. 始めに、HTML/CSSで骨格の部分を作る
2. Laravelを導入
3. 機能の実装
4. デプロイ

#html/cssで骨格の作成
Laravelには独自のテンプレートエンジン「Blade」が用意されているが、勉強も兼ねて一旦HTML/CSSで作成する。

元記事を表示

PHP コンストラクタとは(簡易メモ)

# 目的

– LaravelやPHPのコンストラクタとはなんなのかを簡単にメモする。

# コンストラクタとは

– とあるメソッドの名前である。
– クラスからインスタンスを生成する(オブジェクトがnewによって作られる)時に自動で呼び出されるメソッドのこと。
– 戻り値はない。
– インスタンスを生成するタイミングで実行されるので、プロパティの初期化やクラス内部で使用するリソースの初期化などを行う。

# 記載例

– 下記にコンストラクタの記載例を記載する。

“`php

“`

元記事を表示

Laravel7を日本語化する方法

Laravel5,6,7に対応。
ログイン画面や、エラーメッセージ、確認メールなどを日本語化します:blush:

Laravelはデフォルトでは以下のような英語表記になっています。
これを日本語にしていきます。

スクリーンショット 2020-05-08 15.54.36.png

##app.phpの設定を変更する
プロジェクトフォルダのconfig/app.phpの**’locale’ => ‘en’を’locale’ => ‘ja’**に変更する。

“`php
/*
|————————————————————————–
| Application Locale Configurat

元記事を表示

最強のLaravel開発環境をDockerを使って構築する【新編集版】

お急ぎの方は [使い方](https://qiita.com/ucan-lab/items/5fc1281cd8076c8ac9f4#%E4%BD%BF%E3%81%84%E6%96%B9) からお読みください。

## 概要

[Laravelの開発環境をDockerを使って構築する](https://qiita.com/ucan-lab/items/17c806973e69792ada99) の記事を投稿してから1年以上経ちました。

イシューやコミットメッセージ等も英語で書くように意識したおかげで海外の人を含め多くの方々に使っていただきました。ありがとうございます?

これで完璧だと思った初回コミットから数えるとなんと155コミット?
コード直したら記事を直して…を繰り返してメンテしていたのですがちょっと手に負えなくなったので新編集版として改めて作り直すことにしました。

???「ここから始めましょう、イチから――いいえ、ゼロから!」

## リポジトリ

– https://github.com/ucan-lab/docker-laravel

スターをもらえると嬉しいです

元記事を表示

簡単に述べると、PHPの実体は

簡単に述べると、PHPの実体は、Webサーバに置かれるソフトウエアの [apache](https://www.scollabo.com/banban/php/apd_03.html#apache)モジュールとして動作するスクリプト言語を実行する環境を指します。HTML文書中に記述されたスクリプトを PHPが実行し、結果を HTMLデータとしてWebブラウザに出力する仕組みがあります。
その意味では、PHPを実行させるための Apacheモジュールを Webサーバに置かなければなりません。幸いなことに、Apacheは、世界中で最も普及しているオープン・ソフトであるため、ほとんどの Webサーバに実装されています。
■ PHPの生い立ち
1994年秋、Rasmus Lerdorf氏(グリーンランド生まれのデンマーク育ち) が自分の履歴書ページの閲覧者を調べるために作っていた Perlスクリプト 「Personal Home Page Tools」 を C言語で書き直し、HTMLフォームを扱える動的な Webアプリケーションのための機能 「Form Interpreter」 に拡張したのが

元記事を表示

Windows版PHPでのusleepは引数の値がどの辺りから結果が横這いになるのか

前回 “[PHP usleepより高い精度でスリープしたい](https://qiita.com/akebi_mh/items/735f563c1f484b14f64c)” にて

> Windowsではusleepに指定する値がある程度小さくなると結果が変わらなくなってくるので

と書きましたが、かなり以前に軽く試した程度でしたので、再度確認してみました。

##スクリプト##

確認に使ったスクリプトは以下になります。

~~~php:test.php
= 1; $l /= 10) {
for($sleep_mt = $l; $sleep_mt >= 1; $sleep_mt -= $l / 10) {
sleep(1);
$sleep_res[$sleep_mt] = sleep_loop($sleep_mt);
}
}

print “|argument | actual | ideal | accuracy|\n”;
foreach($sleep_re

元記事を表示

Laravel+GraphQL Lighthouse チュートリアル 後半

## チュートリアル

[前回](https://qiita.com/ucan-lab/items/e7c151133541fbeaebe9)の続きでLaravel+GraphQL Lighthouseチュートリアルを進めます。

## Agenda

1. フィールドにページネーション(ページャー)を追加
2. Eloquentモデルの作成と更新
3. サーバーに送信される値のバリデーション

所要時間: 10分程度

## 1. フィールドにページネーション(ページャー)を追加

https://lighthouse-php.com/master/api-reference/directives.html#paginate
こちらを参考に進めます。

“`graphql:graphql/schema.graphql
type Query {
# posts: [Post!]! @all
posts: [Post!]! @paginate
}
“`

スキーマ定義は自動的に次のように変換されます。
(これは書かなくてokです。)

“`graphql:graph

元記事を表示

Laravelのバージョンを確認する

プロジェクトフォルダにて

“`sh
php artisan –version
“`
もしくは

“`sh
php artisan -V
“`

:blush:

元記事を表示

必須モジュール gd がインストールされていないか、無効化されています。の対処方法

###WordPressのサイトヘルスになにか出ている…

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/231874/0c649566-26be-0886-79e6-88c47103b11b.png)

herokuで稼働しているWordPressがどうもおかしい。管理者なら閲覧できるが、一般ユーザーが記事を見ようとするとエラーになってしまう。
これのせいだろうか??

###原因と対処方法
herokuにデフォルトで入っている拡張ライブラリにgdがないためだそうだ。

対処法としてComposerというのがいるらしいので、[ここ](https://getcomposer.org/download/)からダウンロードした。
特にどこもいじらずそのまま進む。
終わったら`composer -v`して動くのを確かめる。

wordpressのフォルダ直下に`composer.json`を作成。以下のように記載。

“`composer.json
{
“require”: {

元記事を表示

Mockeryで警告出まくり!PHPStormで特定のブロックの特定の警告を無視する

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/103853/01393444-e371-9d6c-c62a-6343e4951e74.png)

ぎゃー!

###環境
– PHPStorm 2020.1.1
– mockery/mockery 1.3.1

###概要
先日PHPStormを最新版にアップグレードしたところ、
Mockeryを使ってmockを作っている箇所が画像のように警告出まくり!まっ黄っ黄になっています!
原因はmockery内のアノテーション。

“`php
/**
* Expected argument setter for the expectation
*
* @param mixed|mixed[] …$args
* @return self
*/
“`
特に規則はないものの、可変引数の形式に配列を含めると、IDE側は引数に配列を期待してしまうようです。

###解決策
プルリ

元記事を表示

Swagger-UI で TypeError: Failed to fetch が出て死ぬ

apiの開発を行うため、swagger-uiを利用していたが、ローカル上のapiに通信を行っても、*TypeError: Failed to fetch* となり結果が表示できなかった。

# 結論
*Access-Control-Allow-Origin* を設定する

自分の場合は phpでslimを利用しているため

“`php

/** @var Psr\Http\Message\ResponseInterface $response */
$response->withHeader(‘Access-Control-Allow-Origin’, ‘*’);
“`

とすることで解決した。(*は後で変えようとは思う。)

元記事を表示

PHPで帳票(PDF)をExcel(テンプレート)から生成するクラスを作ってみた

#はじめに
このところコロナの影響で暇になってしまったので、
昨年(2019)の10月頃にWebの業務アプリを作る事になった時のライブラリを公開したいと思います。

業務アプリなので、帳票がいくつかあって「TCPDF」などでゴリゴリ書いてもよいのですが、保守性を考えてレイアウトをExcelファイルで作成したいなと。
ところが、いろいろライブラリを探しても使えそうなものが、なかなか見つかりません。
そこで「PHPExcel」の後継の「PhpSpreadsheet」が結構使えそうたったので、「TCPDF」と組み合わせて作ってみました。

#概要
このクラスでは、エクセルファイルを読み込んで、セルの修飾情報などを読み込みます。
使う人は、必要に応じてシートオブジェクトに対して各種データのセットを行い、PDF出力メソッドによりWebページにPDFが出力されます。
基本的な使い方はこんな感じ↓

“`php:MainController.php
namespace App\Http\Controllers;

use Illuminate\Http\Request;
use \App\Lib

元記事を表示

Laravel+GraphQL Lighthouse チュートリアル 前半

## チュートリアル

https://lighthouse-php.com/tutorial

これを進めます。
英語のためGoogle翻訳して進めます。
(わかりやすい和訳できる方の編集リクエスト歓迎です?‍♂️)

## 環境

– PHP 7.4.5
– Composer 1.10.5
– Laravel 7.10.3
– Lighthouse 4.12.4
– MySQL 8.0.19

## 使用するパッケージ

https://github.com/nuwave/lighthouse

## 完成版のソースコード

https://github.com/nuwave/lighthouse-tutorial

## What is GraphQL?

GraphQLは、APIのクエリ言語であり、既存のデータでこれらのクエリを実行するためのランタイムです。

GraphQLは、API内のデータの完全で理解可能な説明を提供し、クライアントに必要なものだけを正確に要求する力を与え、APIを長期間にわたって容易に進化させ、強力な開発者ツールを有効にします。

![playgroun

元記事を表示

DockerでLaravel環境を整えてwebアプリを開発するまでの流れ

#はじめに
dockerとlaravelを勉強するために簡単なwebアプリを作成したので,その大まかな流れと操作,エラーの対処法などを解説します.この記事がdockerやlaravelを学習しようとしている方の役に立てば幸いです.

#開発環境
(ホストOS)

– CentOS7
– (fedora32)

(dockerコンテナ)

– PHP7.4
– Laravel7.6
– MariaDB10.4
– Apache2.4

#最終的なディレクトリ構成
“`
.
├──docker-compose.yml
├── mariadb
| ├── mariadb.cnf
| └── Dockerfile
└── php
├── php.ini
├── laravel_project #Laravelプロジェクトのディレクトリ
├── laravel_symbolic_link #/laravel_project/publicのシンボリックリンク
├── apache
│ └── httpd.conf

元記事を表示

CodeIgniter4でMySQLのDB構築

DB接続までは[こちら](https://qiita.com/kohenji01/items/ced458da42ce70e067f8)をご覧ください。

#DBを作る前に一言

[前回の記事](https://qiita.com/kohenji01/items/ced458da42ce70e067f8)でもそうなのですが、本来はDBの操作は`Models`の中で行うべきなのですが(というより、コントローラ内で、モデルとビューの操作以外を行うことがよろしくない)、CIはこのあたりの縛りが非常にゆるくなっています。
今回もMVCモデルがイマイチ判らん!という人にも直感的に理解できるように、あえてコントローラの中でプログラムを完結させていきたいと思います。
このあと、このメソッドをちゃんとModelに持っていく記事も書く予定です。

#とにかくDBを作る

CI4のDB自体やテーブルの作成などは`Database Forge`クラスが利用可能です。
ただ、`.env`ファイルに使用したいDB名が記述されている場合はForgeを初期化する時にそのDBに接続しにいってしまい、DBがまだできてい

元記事を表示

Laravel マイグレーションファイルの記載方法

# 目的

– 毎回一筋縄ではいかないためいい加減覚えるためにまとめる

# 実施環境

– ハードウェア環境

| 項目 | 情報 |
| — | — |
| OS | macOS Catalina(10.15.3) |
| ハードウェア | MacBook Pro (16-inch ,2019) |
| プロセッサ | 2.6 GHz 6コアIntel Core i7 |
| メモリ | 16 GB 2667 MHz DDR4 |
| グラフィックス | AMD Radeon Pro 5300M 4 GB Intel UHD Graphics 630 1536 MB |

– ソフトウェア環境

| 項目 | 情報 | 備考 |
| — | — | — |
| PHP バージョン | 7.4.3 | Homwbrewを用いて導入 |
| Laravel バージョン | 7.0.8 | commposerを用いて導入 |
| MySQLバージョン | 8.0.19 for osx10.13 on x86_64 | Homwbrewを用いて導入 |

# 前提情報

元記事を表示

OTHERカテゴリの最新記事