PHP関連のことを調べてみた2022年06月25日

PHP関連のことを調べてみた2022年06月25日

Eloquent のリレーションの使い方

## 大前提

テーブル名やカラム名の命名規則は遵守すること。

* プライマリは `id`
* `他テーブル名_id` は必ず外部キー。

論理名として「なんとかID」があったとしても、`nantoka_key` や `nantoka_code` にし、存在しないテーブルの `naktoka_id` は絶対に作ってはならない。

なお、ここで「外部キー」は必ずしも外部キー制約(FORREIGN KEY)を振るものではない。Eloquet のリレーションを結びつける論理キーを指している。
詳しくは、[Eloquent 前提の MySQL データベース設計](https://qiita.com/mikomey/items/50cceaf1f5e22d8b2b72) を参照のこと。

## リレーション定義の指針

– モデル定義と同時にすべての定義を書く必要はなく、コーディングの都度追加で十分。
– すなわち、hasMany に対応する belongsTo を必ずしもペアで定義する必要性はない。
– 慣れれば定義すべきリレーションは想像つくので、真っ先に定義することを否定はしない。

元記事を表示

Laravel プロジェクトの作成からシーダーまで

## Example プロジェクトの作成

Eloquent リレーションの動きを tinker で試すための Example プロジェクトの作成をまとめてみた。
このプロジェクトは次の記事で練習台として使う。

– [Laravel のコレクションとは](https://qiita.com/mikomey/items/f464dafe883b60a09247)
– [Eloquent のリレーションの使い方](https://qiita.com/mikomey/items/705834f47dcf4d3cbd1e)
– TBD

まずは、Laravel の新規プロジェクトの作成から。

*/var/www/sutdy/project をアプリケーションルートする場合:*

“`bash
$ mkdir -p /var/www/study
$ cd /var/www/study
$ composer create-project laravel/laravel:^8.0 example
$ cd example
$ chmod -R a+w storage
$ chmod -R a+

元記事を表示

【PHP基礎⑰】配列-1.foreach文

[問題]
要素数10の整数型の配列を宣言し、i番目の要素の初期値をiとし、順に値を表示するプログラムを作成しなさい。
配列の初期化は初期化子を使ってもよいし、繰り返しで初期値を代入してもよい。

# コード
“`php
$a = [0,1,2,3,4,5,6,7,8,9];
foreach($a as $m){
echo “$m \n”;
}
“`

# 結果
“`
0
1
2
3
4
5
6
7
8
9
“`

☆配列
・変数には1つしか情報を格納できなかったが、配列には複数の文字列や数値を格納することができる。
 格納した値を要素という。
・配列は、0番目、1番目…というように、0から始まる。
・[ ]で括る。
・その要素が配列の何番目かということを「キー」といい、配列$mの4番目なら、「 $m[4] 」と表記する。

☆foreach文

   foreach(配列変数 as 取り出した要素の値を格納する変数){
      実行する処理;
   }
 
・配列に含まれる各要素の値を順に取り出したい時に場合に便利。
・foreach文で

元記事を表示

【PHP】ビルトインサーバーの使い方

自分用のメモです。

# ビルトインサーバーとは

– PHPでのプログラム開発サポート用に組み込まれているサーバー環境のこと。

– ローカル環境はXAMPPやMAMPなどの環境を用意してPHPを動かしている方も多いと思いますが、PHPの場合、ビルドインサーバーを使うとコマンド1つで手軽にローカルサーバーの立ち上げができるので便利です。
– ただし、ビルトインサーバーはあくまで簡易的な環境のため、データベースなどと連携したい場合は、自前で用意する必要があります。

# ビルトインサーバー立ち上げ〜ブラウザでの表示方法

#### 作業フォルダへ移動

“`
$ cd sample_dr
“`

#### 立ち上げる

“`
$ php -S localhost:8000
“`

#### (例)sample.phpファイルを表示させたい場合

“`
http://localhost:8000/sample.php にアクセス
“`

元記事を表示

LaravelでAPI仕様書(OAS)と実装の乖離を簡単に防ぐならSpectatorがおすすめ!

皆さんはAPI仕様書(OAS)と実装の乖離を防ぐためにどのような対応をされていますでしょうか?

– コードからOASを自動生成することで乖離を防ぐ
– OASからコードを自動生成することで乖離を防ぐ
– PRレビュー時に目視で乖離を防ぐ
– 自作の検証ツールで乖離を防ぐ

などなどいくつかのアプローチが考えられるのかなと思います。

良い感じに自動生成ができれば乖離の心配はないかもしれませんが、少なからず手動作業が入る場合は何らか乖離を防ぐ検証が必要になると思います。

今回は、Laravelでそんなシーンに出くわした際にぜひ検討いただきたい [Spectator](https://github.com/hotmeteor/spectator) というツールを紹介させていただきます。

# 前提

php: 8.1.6
laravel/framework: 9.17.0
hotmeteor/spectator: 1.5.0
サンプルコード: https://github.com/TsukasaGR/laravel-spectator-sample

# Spectator is 何?

元記事を表示

フォルダを指定してマイグレーションファイルを作成したい

マイグレーションファイルを作成する際にフォルダを指定して行う必要があり、その方法を調査したため、備忘録としてメモしておきます。

# 必要になった理由

ファイル構成は次のとおり。
“`
– bootstrap/
– config/
– core/
– database/
– migrations/
– develops/
– modules/
– Test

– database/
– Migrations/ ← ここのフォルダを指定したい!

– public/
– resources/
– routes/
– strage/
– tests/
– vue/
“`

今回のプロジェクトは上記のようなファイル構成となっており、プロジェクトのトップで通常のマイグレーションファイルを作成するコマンドを入力しても、
希望の`/module/Test/database/Migrations`配下にマイグレーションファイルを作成できません。

それなら、`/module/Test`まで移動して、通常のマイグレーションファイルを作成するコマンドを入力すれ

元記事を表示

Laravel UI登録画面で画像保存処理を実装


# 概要
Laravel UI導入後に登録画面に画像保存処理を実装したので記録します。
![スクリーンショット 2022-06-23 23.59.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2724488/5592c7d7-e3f2-6e0a-dd89-97ea319a6f85.png)


1. [バージョン](#Chapter1)
1. [View](#Chapter2)
1. [Controller](#Chapter3)



# バージョン
Laravel Framework 9.6.0
PHP 8.1.0
Laravel UI 8.5.19
bootstrap導入済み
シンボリックリンク作成済み


# View
formタグにenctype=”multipart/form-data”

元記事を表示

Macにiterm2を入れてみた!

Macでデフォルト以外のターミナルが使いたくてiterm2をインストールをしてみました。

コマンドとかが全くわからなかったのでとりあえず調査。
最初に見た記事のコマンドを叩くと、以下のエラーメッセージが。。

$brew cask install iterm2
Error: Unknown command: cask

いくつか調べたところ、cskコマンドの使い方が変わったらしいことが判明。
コマンドではなく、オプションに変わったらしい。
cskコマンドすら知らなかったのに、
なんでオプションになってるんや。。と悲鳴を上げつつ以下のコマンドを実行。

$ brew install iterm2 --cask

なんやかんや、ぶわーっとメッセージが出力され、インストール成功!!

iterm2 was successfully installed!

以下の記述の「iterm2」の部分を
インストールしたいアプリ名に変更すれば応用可能だと思われる。

$ brew install iterm2 --cask
元記事を表示

【PHP基礎⑯】ループ処理の終了-do…while文

[問題]
整数値を入力させ、入力値が0でなければ値を表示かつ再度入力してループ処理を続け、0であれば終了するプログラムを作成しなさい。

# コード
```php
do{
$a = intval(fgets(STDIN));
echo $a, PHP_EOL;
}while($a <> 0);
```

↓↓↓

5
-6
0
1  と入力

↓↓↓

# 結果
```
5
-6
0
```

☆do…while文
指定した条件がどうであれ、初回は必ず実行するという繰り返し処理。
2回目以降は、条件を満たす限りずっと処理を繰り返す。

$a = ○ ← 初期値。あれば入れる。
do{
 条件を満たす場合に行う処理;
 増減式;  ← あれば入れる。
}while(条件)

元記事を表示

機種依存文字を置換 PHP

```

元記事を表示

PHP7.4で、$_SESSIONとACPuはどのようにキャッシュされるのか

|[../](https://qiita.com/taconana/items/3f5424f9abfc755772c2) |
|---|

PHP7.4での値渡しと参照渡しについて、もう少し調べてみた。`$_SESSION`や`ACPu`で保持した場合、値はコピーされるのか、参照として取得できるのか。

前回、「[PHPのforeachでは、多くの場合、参照渡しの方がいい?](https://qiita.com/taconana/items/e1a568de0b39b60c4dce)」でforeachにおいて、配列要素がユーザー定義のクラスをインスタンス化したオブジェクトの場合、値渡しにしても参照渡しになることを確認した。もちろん、配列要素が整数などプリミティブな型、文字列、配列の場合、値渡しにするとコピーされることも確認した。

## foreachでの値渡しと参照渡しの確認

再度、復習を兼ねて確認しておく。ユーザー定義のクラスをインスタンス化したオブジェクトとして、Userクラスを使う。`$name`という属性を持たせている。以下の4つが確認できる。

- 配列要素がUser

元記事を表示

【PHP基礎⑮】ループ処理-5. 2ずつカウントアップ

[問題]
整数値を入力させ、0から入力値を超えない値まで2ずつ増やして表示するプログラムを作成しなさい。

# コード
```php
$a = intval(fgets(STDIN));
for($m = 0; $m < $a; $m = $m+2){ echo "$m \n"; } ``` ↓「10」と入力 # 結果 ``` 0 2 4 6 8 ``` ↓では、入力値から0を下回らない値まで2ずつ減らす場合は? ```php $a = intval(fgets(STDIN)); for($m = $a; $m > 0; $m = $m-2){
echo "$m \n";
}
```

結果
```
10
8
6
4
2
```

☆2ずつ減らす場合の増減式は、
 $m = $m-2 または$m-=2

元記事を表示

IoTのプロダクトを作りたくてG's ACADEMYに入った変わり者の制作記録

# 始めに、
はじめまして、 G's ACADEMY(ジーズアカデミー)TOKYO LAB12期のI_Tetsuと申します。
この記事では私がジーズアカデミー LABコース6ヶ月間で制作したプロダクトの中から、
JS選手権、PHP選手権、卒業制作で制作したプロダクトを紹介したいと思います。
(JS選手権、PHP選手権とはそれぞれ一通りの講義の後に行われる選手権で、そこまでに学んだことを活かして制作したプロダクトを発表し、発表の際に投票で順位まで決める発表の機会です。)
※ジーズアカデミーでの講義内容や経験談等は他の方がQiitaやnoteで書かれているのでそちらを参考にしてください。
ykiyoshimaさんのnote:[ジーズアカデミー現役生が前半戦(BOOTCAMPフェーズ)を終えて感じたこと](https://note.com/ykiyoshima/n/n03c5d256d449)

前提として、ジーズアカデミーでは**IoT**に関する講義は**ありません。**

元記事を表示

【Zoom API】クラウド録画をPHPで一括ダウンロードする

この記事は、[「Qiita Engineer Festa 2022」](https://qiita.com/official-campaigns/engineer-festa/2022)に参加するために執筆した記事です。

[**Zoom API/SDKを使ってみよう! - Qiita**](https://qiita.com/official-events/86d8555146e1b14fef24)
'**Zoom APIを実装してみた**'のテーマで執筆します!

# 環境
- PHP8.0
- Composer 2.3.5

# こんな人に読んでほしい
- Zoomにクラウド録画が溜まってきた
- 期間を指定して、ローカルに一括でダウンロードしたい
- ダウンロード時にフォルダ作成、ファイル名もわかりやすく付けたい

# ごあいさつ
はじめまして。KeiOTNです。福岡の小さな会社でコード書いたり事務作業したり何でも屋さんしています。プログラミング歴は約1年。実は、Qiita記事を投稿するのは初めてです。
「アウトプットしなければ、、」と思いつつきちんと記事にまとめることをしてこ

元記事を表示

オリジナルアプリのデータベース登録で、createを使った。

オリジナルアプリのデータベース登録で、悩みに悩み試しにcreateを使ってみることにしました。

# モデルにfillable属性を追加
```Playerdata.php

元記事を表示

【Zoom API】クラウド録画をPHP curlでダウンロードする(Postman併用)

# 環境
PHP 8.0

# 準備
### 1. JWTトークン発行
[Zoomマーケットプレイス](https://marketplace.zoom.us/)でJWTトークンを発行してください。
私が参考にさせていただいた記事は[こちら](https://qiita.com/yosuke-sawamura/items/d8ec07ac8b7b0335a22b)です。

定期的に動かす場合は、プログラム側でJWTトークン生成した方が良いです。当初、生成する方針で進めていましたが、エラー解消できず、今回はZoomマーケットプレイスから発行しました。
参考: [https://qiita.com/gentuki/items/d64f15447cb556eafd3b](https://qiita.com/gentuki/items/d64f15447cb556eafd3b)

### 2. ZoomユーザーIDを取得
postmanを使用してユーザーIDを確認しました。postmanの使用方法については省略します。
[ZoomAPIテンプレート](https://www.postman.c

元記事を表示

php で csv を読み込む上での備忘録

# はじめに

仕事で Laravel 内でcsv を読み込むコードを作成したのでその上で知ったことに関して備忘録代わりにこちらで記載しておきます。

# Shift-JIS な CSV を読み込む

windows 向けを前提とした CSV の場合、 **Shift-JIS** の CSV を扱うことになるかと思います。

その際、php 側は utf-8 で動いているような状態であるなら、当然ながら文字コードの変換が必要になります。

php において文字コードの変換の手法はいくつか存在しますが、保存されているファイルを読み込むような場合においては、以下の様に書くことで一行で文字コードの変換フィルターをかけたうえで読み込むことができます。

```php
$path = '(本来のCSVファイルのパス)';
$file = new \SplFileObject('php://filter/read=convert.iconv.cp932.utf-8/resource=' . $path);
```

```php://filter``` については **php 入出力ストリーム*

元記事を表示

【PHP】期間を指定すると、月初と月末を返してくれる関数を作ったよ

# 環境
php 8.0
# この記事の内容
開始年月YYYY-mmと終了年月YYYY-mmを渡すと、月初日と月末日を配列で返す関数をPHPで作りました。
```php:例
//例えばこんな値を渡すと
$from = '2021-04';
$to = '2022-03';

//こんな配列が返ってきます
[
['2021-04-01','2021-04-30'],
['2021-05-01','2021-05-31'],
['2021-06-01','2021-06-30'],
['2021-07-01','2021-07-31'],
['2021-08-01','2021-08-31'],
['2021-09-01','2021-09-30'],
['2021-10-01','2021-10-31'],
['2021-11-01','2021-11-30'],
['2021-12-01','2021-12-31'],
['2022-01-01','2022-01-31'],
['2022-02-0

元記事を表示

【PHP基礎⑭】ループ処理-4.カウントダウン

[問題]
整数値を入力させ、入力値から0まで数を1ずつ減らして表示するプログラムを作成しなさい。
なお、入力値に0以下の値を入力した場合は考慮しなくてもよい。

# コード
```php
$a = intval(fgets(STDIN));
for($m = $a; $m >= 0; $m--){
echo "$m \n";
}
```

↓「7」と入力

# 結果
```
7
6
5
4
3
2
1
0
```

☆1ずつ減らす→ $m--

元記事を表示

【PHP基礎⑬】ループ処理-3.カウントアップ

[問題]
整数値を入力させ、0から入力値まで数を1ずつ増やして表示するプログラムを作成しなさい。
なお、入力値に0以下の値を入力した場合は考慮しなくてもよい。

# コード
```php
$a = intval(fgets(STDIN));
for($m = 0; $m <= $a; $m++){ echo "$m \n"; } ``` ↓「7」と入力 # 結果 ``` 0 1 2 3 4 5 6 7 ```

元記事を表示

OTHERカテゴリの最新記事