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

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

Laravelのeloquentでjoinしたときに同じカラム名でバグる可能性

aテーブルのid=1

bテーブルのid=2でa_id=1だとして、
これをjoinすると

“`php
$a = A::join(‘b’, ‘a.id’, ‘=’, ‘b.a_id’)->first();
“`

とする。

このとき

“`php
$a->id; // 2
“`

となる現象が起きました。
同じidというカラム名だからっぽいです。
このままだとidをキーにするのでリレーションで辿るデータなどがうまくとれないなど発生します。
知らないと結構やらかしそうな内容です。

回避は

“`php
$a = A::select(‘*’, ‘a.id as id’)->join(‘b’, ‘a.id’, ‘=’, ‘b.a_id’)->first();
“`

とかですね。
あとはこれを起こさないためのグローバルスコープなんかもissueに書かれてました。

“`php
trait OnlyMyColumnsTrait
{
public static function bootOnlyMyColumnsTrait()
{
stati

元記事を表示

【Laravel】laravel-adminの導入から初期設定まで

# 概要
laravel-adminを利用して、インストールから初期設定までを行います。
実務でLaravelを使う機会があればlaravel-adminを使用する場面があるかもしれないのでこの機会にまずは設定をしていきます。

※Laravelプロジェクトがインストール済みの前提で進めます。

# laravel-adminとは
Laravelで簡単に管理画面が構築できるライブラリです。

ドキュメントやデモサイトなど使用するために必要な資料が充実しており、難しいカスタムを行う必要がなければものすごく簡単に管理画面が構築できます。

[公式ドキュメント](https://www.ritolab.com/entry/208#:~:text=%E7%84%A1%E5%90%8D%E3%82%AF%E3%83%A9%E3%82%B9-,%E6%A6%82%E8%A6%81,%E6%91%A9%E6%93%A6%E3%82%92%E6%B8%9B%E3%82%89%E3%81%99%E3%81%93%E3%81%A8%E3%81%A7%E3%81%99%E3%80%82)

[demoサイト

元記事を表示

php xml request with curl

“`



Rahul kumar
10
5th
25

‘;

$url = “https://www.website.com/ws”;

$ch = curl_init();
if (!$ch) {
die(“Couldn’t initialize a cURL handle”);
}
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt

元記事を表示

[Laravel] HTTPS での接続を強制する

Laravel を使ったサイトをさっき検証環境、本番環境にリリースしたらHTTPとHTTPSが混在してるよ!!という事でうまく動きませんでした。

“`
{!! Form::open(array(‘url’ => ‘/login’, ‘role’ => ‘form’, ‘name’ => ‘loginForm’, ‘id’ => ‘loginForm’, ‘class’ => ‘login’)) !!}
“`

こういう記述があるとHTTPSページ内にあるフォームのPOST先がHTTPになってエラーになったりします。

こちらの解決方法を以下に記します。

# 結論
web.php に以下を記述します。

“`php
if (App::environment(‘production’) || App::environment(‘staging’)) {
URL::forceScheme(‘https’);
}
“`

`App::environment(‘production’)`は本番環境の.envファイルに`APP_ENV=production`と記述されている前

元記事を表示

Laravel で主キー(プライマリキー)を ULID で登録する方法

# 環境

Laravel Framework 8.54.0
PHP 8.0.9
docker-compose version 1.29.2
rorecek/laravel-ulid:^2.0

# 手順

## `rorecek/laravel-ulid`

https://github.com/rorecek/laravel-ulid

まずは、`rorecek/laravel-ulid`のインストールを行います。
ターミナルを開き、以下のコマンドを入力します。

“`sh:ターミナル(sail)
$ ./vendor/bin/sail composer require rorecek/laravel-ulid:^2.0
“`

“`sh:ターミナル(composer)
$ composer require rorecek/laravel-ulid:^2.0
“`

これで、インストールは完了しました。

## マイグレーション

次に、マイグレーションから編集していきます。
今回はユーザに関しての変更を行おうと思うので、
デフォルトの`database/migration

元記事を表示

Laravel9.x変更点

# はじめに
[LaravelのUpgrade Guide](https://laravel.com/docs/9.x/upgrade)をもとに影響度がミディアム以上のものを日本語訳もといDeepLにつっこんでみたものです。
明らかに変な日本語になってると感じたとこは自力で頑張ります。

# 目次
[依存関係の更新](#依存関係の更新)
[PHPの戻り値の型](#PHPの戻り値の型)
[アプリケーション](#アプリケーション)
[Flysystem_3.x](#Flysystem_3.x)
[ヘルパー関数](#ヘルパー関数)
[HTTP Client](#HTTP_Client)
[Symfony_Mailer](#Symfony_Mailer)
[Packages](#Packages)
[Test](#Test)
[Validation](#Validation)

# 依存関係の更新
PHPのバージョンは 8.0.2以上を必要とします。

composer.jsonで以下の依存関係を更新する必要があります。

– laravel/framewor

元記事を表示

twitterを快活クラブから借りたパソコンでリモワで見るWebサービス

https://jflabo.naturum.ne.jp/e3467003.html

リモワ対応 借りたマシンでも仕事できるように調整中

一時行政系も 効率よく情報を配信する道具として使っていましたね
あのあと使えなくなった人が結構いて 悩ましいです。

元記事を表示

GitHub Actions workflowについてのススメ

# 概要

`GitHubActions`を利用したテストワークフローの構築について社内布教用にまとめてみた

# 経緯

@ucan-lab さんのハンズオンに参加して個人的に導入はしているがチーム内で技術共有をしてなかったので布教用としてまとめることにしました
なお、今回の`workflow`については以下のハンズオン資料を流用させていただいています。

https://qiita.com/ucan-lab/items/56c9dc3cf2e6762672f4#github-actions-%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%83%93%E3%83%AB%E3%83%89%E3%83%86%E3%82%B9%E3%83%88%E3%82%92%E6%9B%B8%E3%81%8F

https://php-builders.connpass.com/event/239066/

# 解説

https://docs.github.com/ja/actions/learn-github-actions/understanding-githu

元記事を表示

[OCI]ウォレットを使用せずにPHPアプリケーションからAutonomous DatabaseにTLS認証で接続してみた

#はじめに
[こちら](https://qiita.com/500InternalServerError/items/6822718140afc4e8884e)の記事では、ウォレットを使用せずにSQL*PlusからAutonomous DatabaseにTLS認証で接続できることを確認しました。

今回は、php-oci8を使用したPHPアプリケーションから、ウォレットを使用せずにSQL*PlusからAutonomous DatabaseにTLS認証で接続してみます。

[こちら](https://qiita.com/500InternalServerError/items/6822718140afc4e8884e)の記事で作成したAutonomous DatabaseとComputeインスタンスを使用して環境を構築します。

#1.PHP、php-oci8、httpd(Apache2)のインストールと設定
yumコマンドでPHP、php-oci8とApache2をインストールします。

“`
[opc@compute1 ~]$ sudo yum install -y oracle-

元記事を表示

APIから気象情報を取得してグラフ化

#はじめに
OpenWeatherMapAPIから気象情報を取得してChart.jsを使ってグラフ化してみました。
例として、「現在の時刻から24h後までの東京都の気温の変化」を取得します。

環境
– Laravel6系(PHP)
– OpenWeatherMapAPI
– Chart.js(JavaScriptライブラリ)

##ソースコード例
“`ChartController.php
‘各自で取得’,
‘lat’ => ‘26.231408’, //沖縄の那覇市の緯度
‘l

元記事を表示

これでわかるLaravel8.Xのマルチ認証(Multi Auth)の設定方法

https://reffect.co.jp/laravel/laravel-multi-authentication-understand#i-5

“`web.php
Route::prefix(‘employee’)->namespace(‘Emplyee’)->name(‘employee.’)->group(function(){
Auth::routes();
});
“`

“`command
php artisan route:list
“`
ここで、修正してもLaravel8を使用している方は、エラーが出ちゃうと思います。
それはルーティングの指定がLaravel7とLaravel8で
変更になったからです。

その対処法はこちら

“`php
->namespace(‘App\Http\Controllers\Emplyee’)
“`

これで、OKです!

詳しくはこちらの記事を参考にしてみてください!

https://zakkuri.life/laravel-laravel8%E3%81%AE%E3%83%AB%E3%83%BC%E3%83%

元記事を表示

10: 多次元配列,

多次元配列

配列/連想配列の要素として格納できるのは、数値や文字列ばかりでは無い。

任意の型の値、例えば配列そのものを格納してもかまわない。

入れ子の配列

具体例

“`
$data1 = [
[‘x-1’, ‘x-2’, ‘x-3’],
[‘y-1’, ‘y-2’, ‘y-3’],
[‘z-1’, ‘x-2’, ‘x-3’],
];

“`

配列$data1

||0|1|2|
|:-:|:-:|:-:|:-:|
|0|[0,0]x-1|[0,1]x-2|[0,2]x-3|
|1|[1,0]y-1|[1,1]y-2|[1,2]y-3|
|2|[2,0]z-1|[2,1]z-2|[2,2]z-3|
上記は二次元配列

このように「配列の配列」を表すようなケースでは、最低限、要素ごとに改行とインデントを加えると構造が分かりやすくなり、コードも読みやすくなる。

構文規則ではないが、

元記事を表示

MySQLのdumpファイルをインポートすると文字化けする

# 概要
商用環境(Webシステム)をローカルに構築しように発生した問題です。
解決方法をメモとして残します。
##ローカル構築時に行った手順
1. ソースコードをローカルにコピー
1. MySQL立ち上げ(docker)
1. dumpファイルをMySQLにインポート
1. DB接続先を修正
1. 動作確認
→MySQLのデータが文字化けしてしまっている

##対応
dumpファイルのこの行を消す

~~~dump_yyyymmdd.sql
/*!50503 SET NAMES cp932 */;
~~~

##感想
商用環境がWindowsサーバーだったり、MySQLのversionがどうこうとか、ローカルがdockerだからとか、
色々想像で動いてしまったせいで解決に時間がかかりました。情けない!!

元記事を表示

時間範囲指定のバリデーション

# 概要
フォーム入力で「09:00 – 18:00」のような時間を指定する際のバリデーション

# 結論
“`
^([01][0-9]|2[0-3]):[0-5][0-9]\s-\s([01][0-9]|2[0-3]):[0-5][0-9]$
“`

# 参考
* [日付および時刻の正規表現](https://www.javadrive.jp/regex-basic/sample/index6.html#section2)

元記事を表示

9: 配列途中, 連想配列

配列 昨日の途中

“`
$data = [‘河野’, ’子安’, ’及川’, ’中辻’, ’地引’];
[0] [1] [2] [3] [4]
“`

このように配列の中身を参照しているのが上。

ブラケット([~])で括られた部分は、インデックス番号または添え字と呼ばれ、配列の何番目の要素を取り出すのかを表す。

上の例では、配列\$dataに5つの要素が格納されているので、指定できるインデックス番号は0〜4の範囲となる。

配列へのアクセス

“`
$配列名[インデックス番号]
“`

ブラケット構文を利用する事で、配列の個々の要素に値をセットすることもできる。

具体例

“`

元記事を表示

cakePHPでtinyint型を扱うときの注意事項

cakePHPではMySQLのtinyint型をboolean型として扱ってしまいます。

cakePHPではtinyintを使うな!という意見もありますが、以下のようにvirtualFieldsで型変換することにより、tinyintを「0」「1」以外で使うことができます。

以下をModel内で定義する。以下はstatusカラム(tinyint型)の例。

“`
public $virtualFields = array(
‘status’ => ‘CAST(モデル名.status as CHAR)’,
)
“`

元記事を表示

Apache + Laravelで.htaccessを弄ってもAccess-Control-Allow-Originが変わらない問題を解決

初めましての方は初めまして。けこです。

この度ちょっとしたAPIサーバを立てる運びになりまして、その際にAccess-Control-Allow-Originの設定を”*”にすることはできません。という内容のエラーに苦しめられましたので、知見を共有させていただきます。(注意:Laravel初学者です)

### 構成等
フロントエンドVue.js、バックエンドLaravel+MySQLという構成です。
フロントエンドはexample.jp、バックエンドはxxx.example.jpというドメインを取っていました。よくあるSPAってやつです。

今回苦戦したのはフロントからバックエンドのAPIサーバ(Laravel)からデータを取るリクエストをする際のAccess-Control-Allow-Origin設定です。

### どんな問題が発生したか?

ドメイン名が完全一致ではない、つまりsame-originではないのでCORS通信の設定が必要です。
今回発生したのはいくら.htaccessを弄ってもAccess-Control-Allow-Originが反映されないという問題です。

元記事を表示

Windowsにてポートを管理するサービスの一部停止

phpのlaravelプロジェクトをやり、sail upコマンドより、立ち上げたら、下記のエラーが発生しました。
理由としては、Windowsにて管理されるポート番号を使うからで、回避方法はポート番号を変更することにより、
簡単に回避はできま。
もしくは、Windowsにてポートを管理するサービスを停止する方法もありました。

“`
Error response from daemon: Ports are not available: listen tcp 0.0.0.0:80: bind: An attempt was made to access a socket in a way forbidden by its access permissions.
“`

しかしながら、セキュリティー面でやりたくないと思って、探してみたら、ライブラリとして、基本提供はしていることがわかりました。
開発者がどうしても、Windowsにてポートを管理されたくない時のためですかね。(笑)

コード: https://github.com/heedaily/ExcludedPortRange

元記事を表示

Laravel9にjwt-authを追加する

# 本記事の目的
Laravel9にjwt-authを追加し、ログインからtokenを送ることでユーザー情報を取得できるまで行う。

# 環境
PHP 8.1.2
Laravel 9.1.0
PHP-Open-Source-Saver/jwt-auth 1.4.1

# 前提条件
Laravel9.0が起動できている。

![Screen Shot 2022-02-21 at 22.05.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/898137/5e4750cb-4ba9-7d64-f797-ddcc825ee965.png)

# パッケージのインストール
composer requireでパッケージをインストールする。

“`
composer require php-open-source-saver/jwt-auth
“`

パッケージの構成ファイルを公開する。

“`
php artisan vendor:publish –provider=”PHPOpenSourceSa

元記事を表示

PHP cookies 更新と反映

$_COOKIEはブラウザ上に**保存された**情報を読み込む。

setcookie関数で情報を更新する際は更新される予定の情報がまだブラウザ上に**保存されていない**(これから保存される。)
よってsetcookie関数が情報を更新する際に$_COOKIEが読み込む情報はこれまでに既に保存されている更新前のcookie情報となる。
上記がsetcookie関数による情報の更新が$_COOKIEに反映されるのにワンアクション遅れる理由。

元記事を表示

OTHERカテゴリの最新記事