PHP関連のことを調べてみた2021年03月22日

PHP関連のことを調べてみた2021年03月22日
目次

アクセサが便利なのでまとめてみる件【Laravel 8系】

##とにかくforeachとif文でやれたけど…
今回は実務で初めて知ったLaravelの便利な使い方をまとめていきます。

どんなことを実務でやったのかというと例えば

“`PHP
class UserController extends Controller
{
public function index()
{
$users = User::all();
return view(‘users.index’, compact(‘users’));
}
}
“`
というコントローラがありviewでUserを一覧で表示するみたいなことは
割と良くやることかなと思います。

“`PHP
@foreach ($users as $user)
{{ $user->name }}さん
{{ $user->email }}
続く…
@endforeach
“`
そんなときに今回のUserのDB情報には権限(role)カラムがあって
管理者(1)と編集者(2)と言った1か2の値を持っていて
それに対して自分

元記事を表示

一つのユーザーテーブルを複数のモデルとガードに分ける

## 背景

ロールを元にユーザーテーブルのガードを分けたかった。

実践的には、ガードを分けるよりも、一つのガードでログインした後に権限でアクセス制御したほうがいいと思う。あくまでも実験的なものとして覚え書きを残す。

## 動作環境

– Mac OS X 10.15.7
– Laravel 8.33.1
– Laravel Permission 4.0.0

## プロジェクトの作成

https://qiita.com/uguisu_an/items/82db934bb588273b9d79

## Laravel-Permission の導入

“`sh
composer require spatie/laravel-permission
php artisan vendor:publish –provider=”Spatie\Permission\PermissionServiceProvider”
“`

## モデルの作成

“`sh
php artisan make:model Student -f
php artisan make:model T

元記事を表示

Laravel と MessagePack で遊ぶ

## 動作環境

– Mac OS X 10.15.7
– Laravel 7.x|8.x
– rybakit/msgpack 0.8
– msgpack-tools 0.6

## プロジェクトの作成

“`sh
composer require rybakit/msgpack
“`

## レスポンスの作成

`routes/web.php`

“`php
use MessagePack\Packer;

Route::get(‘/example.mp’, function () {
$value = (new Packer())->pack([
‘id’ => 1,
‘name’ => ‘John Doe’,
‘age’ => 18,
]);
return response($value)->header(‘Content-Type’, ‘application/x-msgpack’);
});
“`

## ターミナルで確認

“`sh
brew install msgpack-tools
php

元記事を表示

PHPアウトプット

エンジニアの卵です

昨年新卒で入社した会社を辞めてテックキャンプを卒業。(84期生)
今年からIT会社でエンジニアとして働きはじめましたが、まだまだわからないことだらけなので、
Qiitaを通して自分の理解度の定着と他の方の記事をみて学んで行きたいなと思います。

今はプロゲートレベルですが、これから胸を貼ってエンジニアですと言えるようにがんばっていきます。

オブジェクト思考

オブジェクト思考とはオブジェクト(もの)を中心とした考え方で
ECサイトでいうところの商品やユーザー、商品を入れるカートなどの1つ1つを指します。

コードを書く際に商品についてのコード、ユーザーについてのコード、カートについてのコードなど分けて記し、またそれらを組み立てながら作成していくため、この考え方が必要になります。

クラスとインスタンス

クラスとはオブジェクトを生成するための設計図のようなものです。
クラスの中に商品についてやメニューについてなど書いていきます。

インスタンスとはクラスを元に生成された実体を言います。
インスタンスとオブ

元記事を表示

Laravelで検索機能実装時に「リダイレクトが繰り返し行われました。」と表示された件

###検索機能作成時に「リダイレクトが繰り返し行われました。」とエラーが発生!
自分なりに調べてみましたが、核心を得た答えに辿り着くことができず、なかなかに苦労したので備忘録として残します。

###まずは検索フォームのコードです。
Formファサードを利用しているので以下のコードになります。

“`PHP:index.blade.php
{!! Form::open([‘route’ => ‘report.index’, ‘method’ => ‘GET’]) !!}
{!! Form::text(‘search’, ”, [‘class’ => ‘form-control’, ‘type’ => ‘search’, ‘placeholder’ => ‘—-年–月’]) !!}
{!! Form::button(‘‘, [‘class’ => ‘btn btn-icon’, ‘type’ => ‘submit’]) !!}
{!! Form::close() !!}
“`

検索フォームに入力された値をind

元記事を表示

駆け出しエンジニアがLaravelを理解するために意識したこと

## はじめに

実務で **PHP, Laravel** を使用することになり、**最低限の理解(土台つくる)をする**上でやったこと・意識したことをまとめました。実務未経験の方や転職して間もないという方向けの記事になっております。

もちろん実務に入ってまだ約1ヶ月半なのでまだまだわからないことばかりですが、今まで学習してきた Ruby, Rails と違うけど大丈夫かなという不安はなくなってきましたので記事にまとめさせていただきました。

これから転職を考えている人もいるかと思います。個人の見解ですが、そのときに言語を特定のものに絞らなくても良いんじゃないかなあと思いましたので、迷われている方や実務で別の言語を触れるのか不安と思っている方の参考になったら幸いです。

## 実務にはいって

最初は今まで学習してきたものとの違いがあり、自分にできるかなあと思うこともありました。ただそれは振り返ってみれば、**これからやっていけるかなあとか不安などから視野が狭くなっていた**のが原因なのかなと思います。細かく具体的に見ていくとどの言語も別のものになってしまうと思いますが、少し**抽象

元記事を表示

デザインパターンの学習を始める前にクラス図を読めるようになろう

デザインパターンを学習していると説明にクラス図が用いられることが多いですよね。
みなさんはクラス図を見て、概要を理解してからコードを読んでいますか?
クラス図の読み方を理解しておくと概要の把握と理解が捗るので、デザインパターンを始める前にクラス図を読めるようにしておくことをお勧めしています。
実際に自分もそうすることでデザインパターンを理解するまでのコストを抑えられたように感じました。

この記事では、クラス図を読む時に必要最低限の情報をまとめています。
よろしければ、参考になさってください。

## 図の読み方
![スクリーンショット 2021-03-21 13.42.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/94596/0e6d199e-71f5-0462-3fae-5f7d141bb028.png)
![スクリーンショット 2021-03-21 13.56.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/

元記事を表示

Dockerのphp:XX-apacheでpdo_mysqlを使用したい時は

よくあるPHPのLAMP環境をDockerで再現しようとした時

– Dockerfile

“`
FROM php:7.2-apache
WORKDIR /var/www/html/
RUN echo “ index.php && echo “phpinfo();” >> index.php
“`

でDocker起動

“`
docker build -t phptest .
docker run -it -d –name phptest2021 -p 80:80 phptest:latest
“`

localhostでphpinfoを見てみると
![スクリーンショット 2021-03-21 16.07.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1224758/f7b960e0-3201-05d4-6e95-02da42efe9ea.png)

ああ、sqliteしかないのか・・

MySQLやMariaDBを使用したいので、
https://www.php

元記事を表示

mixhostにcomposerをインストールする

引用元 https://noter.fugo.ml/2019-05-02-mixhost%E3%81%ABcomposer%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B

手順

sshでログインし、以下のコマンドを実行する

curl -sS https://getcomposer.org/installer | php

下記コマンドを実行し、composerのバージョンなどが表示されて入れば正常にインストールされている。

php composer.phar

元記事を表示

laravel 姓 名が別カラムなので結合したり、キーワードが空白で区切られていても検索できるwhere節の作り方(全文検索を使わない)

laravelで、DBのカラムがfirst_nameとlast_nameに分かれている。
しかし検索キーワードはいろんなパターンに対応させるように検索させたい場合。
でも全文検索は使えない。

そんな時に役立つかもしれない記事です。

### DBの例

| id | last_name | fist_name |
|:-:|:-:|:-:|
|1|山田|太郎|
|2|田中|花子|

### ユーザーからの検索クエリ

1. 山田 太郎
2. 山田太郎
2. 山田
3. 太郎

という感じで、どんなパターンでも検索をヒットさせたい。
でも全文検索は使わない場合は、このように書けば解決できます。

### 解決コードのEuloquent Where節部分です

前提
usersには検索したいEuloquentモデルが入っているものとします。
keywordsには検索クエリが入っているものとします。

“`php
$users->Where(function ($query) use ($keywords) {
$splited_keywords = extractKeywor

元記事を表示

【Laravel】migrateコマンド一覧

#概要
データベースにテーブルを作成するための`マイグレーション`ですが、テーブルの構造を定義、更新、削除するためのコマンドがいくつもあります。
ここでは`migrateコマンド`として一覧でまとめてみました。

#migrateコマンド一覧
* マイグレーションファイルを作成する

“`
$ php artisan make:migration create_テーブル名_table
“`

* マイグレーションファイルを実行する

“`
$ php artisan migrate
“`

* migrationsテーブルを作成する

“`
$ php artisan migrate:install
“`

* マイグレーションを再実行してテーブルを再構築する。テーブルとデータの初期化

“`
$ php artisan migrate:refresh
“`

* すべてのマイグレーション操作を元に戻す(全削除)

“`
$ php artisan migrate:reset
“`

* 1つ前のマイグレーション操作

元記事を表示

tinkerを使ってみて勉強になった話

MySQLの接続がうまくいかなくて、「解決できたよ!」って記事ではないのですが
「こんな方法あるんだ!」と思ったことがあったので備忘録のため残します。

## tinker

`artisan migrate`コマンドがうまくいかず、エラーメッセージ的に接続が拒否されている内容かなと思ったのでその理由を調べたくてググっていたところ`tinker`でデバッグを調べられることが分かりました。

使い方は簡単でターミナルでコマンドを打つだけです。
Dockerの場合はコンテナに入った状態で行います。

“`
php artisan tinker
“`

そうするとそのまま対話シェルが起動してコマンドを打てるようになります。
以下が実際に入力してみた内容です。

`>>>`の後にそれぞれのコマンドを入力する事で設定内容が確認できます。

“`
>>> config(‘database.default’);
=> “mysql”
>>> config(‘database.connections.mysql.port’);
=> “3306”
>>> config(‘database.con

元記事を表示

SPAにおけるLaravelのCORS設定周辺でつまずいた

# 概要
筆者はエンジニア歴がまだ1年経っていないphpがメインのシステムエンジニアです。
普段の実務ではLaravelは使用しておりません。そのため、不備等がある場合は教えて頂けると幸いです。
今回は友人とSPA開発する際にCORSの設定周辺で苦労したので、今後の自分も含めて共有させていただきます。

# そもそもCORSとは
調べれば詳細が記載されている記事がたくさん見つかると思うので大枠で説明すると、
同一生成元ではないドメインへリクエストの安全性を保証する仕組みです。
CORSに基づいた方法で実装すれば、同一生成元ではないところでもJavaScriptでアクセスすることが可能になると言うことです。
認識違いがあれば指摘していただきたいです。

# 環境
PHP 7.4.16
Laravel Framework 6.18.40

# 発生したエラー
SPAで画像をアップロードする機能を実装したところ、下記のエラーが出力されました…。

““
Access to XMLHttpRequest at ‘http://localhost:8000/api/upload’ fro

元記事を表示

Atomで単語をダブルクリック時に$まで選択するようにする方法

## 概要
PHPなどを利用していると変数のプレフィックスが`$`なので、変数をダブルクリックした際には`$`を範囲に含みたいかと思います。
Atomを使っていたらいつの間にか選択範囲から`$`が除外されていたので変更方法をメモ。

![スクリーンショット 2021-03-21 5.33.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647095/e99f9c67-79b8-4689-162a-da1161f4ca1e.png)
? こうしたい
![スクリーンショット 2021-03-21 5.33.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647095/dac2b50a-e9d4-125f-0f73-60af831a65ae.png)

## 方法
[Atom] → [環境設定] もしくは `⌘+,` → [エディタ設定] を開く
「単語の一部として扱わない文字」を以下のように変更

“` 単語の

元記事を表示

【Laravel】Seedデータを作成する UserSeeder.php

## Seedデータを作成する
“`
$ dokcer-compose exec workspace php artisan make:seeder UserSeeder
“`
laradockを使用しているので、laradockディレクトリに移動してから上記のコマンドを実行する。
ここでは、“UserSeeder“というファイルを作成して、Userに関するデータを登録する。

“`database/seeds/UserSeeder.php

元記事を表示

【Laravel】php artisan make:model ***で作成したマイグレーションファイルの中身

## Laravelのmigrationファイルの中身
“`php
bigIncrements(‘id’);
$table->timestamps();
});

元記事を表示

microCMS 部分的なCMS 導入(無料) プレビュー機能付き

## 背景
以前、ホームページを制作させて頂いた依頼主様から
一部CMSを導入したいとの要望があったので、microCMSを導入してみました。
microCMSの管理ページでカスタム項目を作成し、内容を入力すれば、APIで取得するだけなのでお手軽です。
管理ページの作成や投稿関連の機能などを作る必要がなかったので、開発工数が大幅に削減できました。
WordPressまでは必要なく、部分的にのみCMSを導入したい場合は是非オススメです。
今回は、フリープランで十分でしたので無料で利用できました。

– データ転送料: 100GB
– API数: 10個
– READリクエスト数: 無制限

詳しい料金体系は[こちら](https://microcms.io/pricing)

## [microCMS](https://microcms.io/)でできること
管理ページでカスタム登録した項目(ここでは、商品名・商品画像・商品説明)に内容を追加して公開ボタンを押せば、公開したWEBサイトに即時反映されます。
画面プレビューボタンを押せば、公開前にプレビューも確認することができます。(

元記事を表示

【初心者向け】ServiceProviderを理解するためだけに作ったプロジェクト

## ServiceProviderを理解するためだけに作ったプロジェクト
https://github.com/morry48/PracticeServiceProvider

サービスプロバイダの解説を読んでもなかなか仕組みや使うことのメリットが分からなかったので、
理解するためだけのプロジェクトを作ってみた。

画面に環境構築すると初期画面にクラス名とcry()の実行結果を表示している。

この実装を追うことでサービスプロバイダの使い方と仕組みを理解する。

![スクリーンショット 2021-03-20 17.11.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/378609/fe8ff383-82e0-c5c0-b253-8403764a6a11.png)

Animalのインターフェイスとその中にcry()を定義

“`app/Animal/AnimalInterface.php

元記事を表示

変数について(PHP)

# 変数とは
変数とは、例えるなら、**「箱」**のようなものです。
変数(箱)があることによって文字や数値などのデータを入れることができます。
変数にデータを入れることを**「代入」**と言います。
変数からデータを取り出すことを**「参照」**と言います。
変数には名前をつけることができます。それを変数名と言います。
変数を作ることを**「変数を宣言する」**と言います。

# コードの書き方

実際にコードを書いてみます。

“`php

元記事を表示

LaravelのPHPUnitのテストでなぜか500エラーが返る時。

viewがしっかり200レスポンスを返しているかどうかのテストコード。
テスト関係なく、ブラウザの表示を目で見る限り、問題なく表示され、500レスポンスは返って来ていないのになぜか以下の通りに500レスポンスだと指摘される。

“`
$ ./vendor/bin/phpunit ./tests/Feature/ExampleTest.php
PHPUnit 9.5.3 by Sebastian Bergmann and contributors.

Warning: Your XML configuration validates against a deprecated schema.
Suggestion: Migrate your XML configuration using “–migrate-configuration”!

F 1 / 1 (100%)

Time: 00:00.573, Memory: 20.00 M

元記事を表示

OTHERカテゴリの最新記事