- 1. Laravel ユーザIDを取得しようとしたらエラーが出た話
- 2. 本日の学習内容part5
- 3. PHP学習記 #3日目
- 4. jsson_encodeとserializeでハマった話
- 5. Migrate:refreshもだめ、phpMyAdminもだめ。
- 6. PhpStormでPSR-12に準拠させる
- 7. phpのCarbonで月の計算をするときの注意点
- 8. 【初心者向け】PHPマスター講座 vol.4(比較演算子を学ぼう)
- 9. PHP for文つまずきポイント
- 10. php掲示板のログアウト画面をクッキーを用いて実装したいです。
- 11. Chromeでajax処理のデバッグをする
- 12. PHP学習記 #2日目
- 13. CakePHP3で別々のデータベースのテーブルをjoinする方法
- 14. CakePHP3で複数でデータベースに接続する方法
- 15. LaravelでjQueryを使ってAjax通信する時のURLの書き方は注意!
- 16. ルーターに合わせてパスを書こう!
- 17. 【Laravel】リレーションがある場合のファクトリによるテストデータの生成
- 18. [PHP]paizaスキルチェック用標準入力取得方法のメモ
- 19. Custom Field Suite のループで配列の最初の要素を取得する
- 20. [初心者向け] laravel ルーティング
- 21. 【初心者向け】PHPマスター講座 vol.3(代数演算子を学ぼう)
Laravel ユーザIDを取得しようとしたらエラーが出た話
# 目的
– 初歩的であるがこれからもうっかり発生させそうなエラーなので解決方法を含めてまとめる
# 実施環境
– ハードウェア環境
| 項目 | 情報 | 備考 |
| — | — | — |
| OS | macOS Catalina(10.15.3) ||
| ハードウェア | MacBook Air (11-inch ,2012) ||
| プロセッサ | 1.7 GHz デュアルコアIntel Core i5 ||
| メモリ | 8 GB 1600 MHz DDR3 ||
| グラフィックス | Intel HD Graphics 4000 1536 MB ||– ソフトウェア環境
| 項目 | 情報 | 備考 |
| — | — | — |
| PHP バージョン | 7.4.3 | Homwbrewを用いて導入 |
| Laravel バージョン | 7.0.8 | commposerを用いて導入 |
| MySQLバージョン | 8.0.19 for osx10.13 on x86_64 | Homwbrewを用いて導入 |
本日の学習内容part5
##書籍での学習を始めます
PHPを[Progate](https://prog-8.com/)や[ドットインストール](https://dotinstall.com/)、[Udemy](https://www.udemy.com/)である程度学習しましたので、一度フレームワークというものを触ってみようという事で、先週末に[PHPフレームワークLarabel入門第2版](https://www.shuwasystem.co.jp/book/9784798060996.html)を買ってきました。##今日した事
・composerのインストール
やり方は端折ります。が、ネット上にも情報が転がってましたので、リンク貼っておきます。[【PHP】Composerは絶対必要!インストール方法と解説で完全攻略](https://www.sejuku.net/blog/82454)・Laravelのインストール
こちらもやり方を端折ります。(著作権侵害こわひ。) こちらもネット上のやり方リンク貼っておきます。[導入手順を解説!Laravelのインストール方法【初心者向け】](https:
PHP学習記 #3日目
#useとは
名前空間の拡張機能であって、クラス、関数、定数などをインポートするときに使用する。#stmt
PDOStatementオブジェクトを示すことが多い。#queryとprepareの違い
PDO(PHP Data Object)でのクエリの実行には2種類の存在する。それが、query()とprepare()である。
queryメソッドを利用してSQL文を実行する際は、ユーザーからの入力をSQL文に含めることが出来ない。しかし、prepareメソッドを利用して、SQL文を実行する際は、ユーザーからの入力をSQL文に含めることができる。#try-catchとは
tryブロックにはメイン処理に必要な処理を記述する。catchブロックにはメイン処理に例外が発生した場合、その情報をキャッチし、異常処理を記述する。
jsson_encodeとserializeでハマった話
# はじめに
サイト共通の重い計算処理を各ページでやるコストが高いので、処理結果をobj化してDBに保存して使いまわしたい
・・・と考えた。# 最初にやってみた方法
## 保存用テーブル
“`sql
CREATE TABLE IF NOT EXISTS `xxxx_save_t` (
`xxxx_save_id` int(11) NOT NULL AUTO_INCREMENT,
`data` longblob NOT NULL,
`create_time` datetime NOT NULL,
`update_time` datetime NOT NULL,
`delete_time` datetime DEFAULT NULL,
`delete_flg` int(11) NOT NULL DEFAULT ‘0’,
PRIMARY KEY (`xxxx_save_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;
“`## 保存処理
“`php
$obj = xxxx /
Migrate:refreshもだめ、phpMyAdminもだめ。
今日、Laravelのサーバーで`git pull`した後に、`migrate:refresh`をしようとしたらエラーが発生してしまいました。
原因は、migrationの名前を変更したことなのですが、さらに問題が発生しました。
**phpMyAdminに入れねぇ。。**
phpMyAdminがサーバー側のエラーで入れませんでした。
そこで考えました。
**PHPでテーブル消すコード書けば良くね?**
ということで、サーバーへのアクセス制限をしたのちに下のコードでテーブルを全て消しました。
“`PHP
query(‘SHOW TABLES’);
while($re = $stmt->fetch(PDO::FETCH_ASSOC)){
echo $re[‘Tables_in_DB名’].’,’;
$dbh->query(‘DROP TABLE ‘.$re[‘Tables_
PhpStormでPSR-12に準拠させる
Preferences -> Editor -> Code Style -> PHP
までいき、Set from…をクリックすると、その中にPSR-12がある。
そこから選べばOK。あとはReformat Code(Option + Command + L)でコードを修正。
phpのCarbonで月の計算をするときの注意点
phpの日付操作の定番ライブラリである[Carbon](https://carbon.nesbot.com)についてです。
# 問題点
「10月31日」に1ヶ月足すと何日が正解でしょうか?
感覚的には「11月30日」になってほしいのではないでしょうか?
Carbonでは`addMonth()`や`addMonths()`で1ヶ月足すと“`php
Carbon::parse(‘2018-10-31’)->addMonth()->toDateString(); // 2018-12-01
“``2018-12-01`になってしまいます。
こうなることを知ってないとプログラム中で意図しないことになる場合があります。
やっかいなのは月末くらいしかこのパターンにならないためテスト中に問題に気付きにくいことです。この問題を解決する方法はいくつかあります。
# addMonthNoOverflow()
`addMonth()`のかわりに`addMonthNoOverflow()`を使います。
これを使うと“`php
Carbon::parse(‘2018-10-
【初心者向け】PHPマスター講座 vol.4(比較演算子を学ぼう)
みなさんこんにちは!けいです
今回は「比較演算子」について解説します!
#【PHPマスター講座】演算子とは
===========================
###▶︎演算子(えんざんし)とは何か??
>ひとつ以上の値 (あるいはプログラミング用語における「式」) から別の値 (制御構造が式になるように) を生み出すもの(引用先:PHPマニュアル)
見てもらうとわかるように…
マニュアルは「これでもか!」ってくらい
簡単な内容を複雑に書く天才なので今回は演算子の中でも
初心者が一番初めに学んでおくべき【比較演算子】について
一つずつ丁寧に解説していきます!※演算子の基本となる[「代数演算子」](https://qiita.com/life_is/items/01d884602a355f9df926)の知識が曖昧な方は上記リンクから別記事を先に読むと理解度を上げていくことができますよ。
————————-
###▶︎【比較演算子を一言で表すと】?
「値同士を比較し、その結果を返す」ですが…
これだとまだイメージがつき
PHP for文つまずきポイント
# はじめに
* 初心者向けです。お手柔らかに。
* 昔書いたやつです。下書き溜まっちゃったので出します。## for文
“`.php
$array = [‘りんご’,’ゴリラ’,’ラッパ’,’パンツ’];
for ($i=0; $i < count($array); $i++) { # code... } ``` プログラミング始めたばかりの頃によく見たこの書き方、個人的にはよくないと思っている。 なぜなら ```.php $i < count($array) ``` ここにcount()関数を用いることによって、実行条件の評価時に毎回count()が実行されてしまうからだ。 これがどういうデメリットを産むかというと、 * 実行条件が評価される度に、関数が実行されるため重くなる。 * for文の中(ループ中)で$arrayの要素の数が変更された場合、実行条件が変わってしまう 致命的なのはこれ * for文の中(ループ中)で配列の数が変更された場合、実行条件が変わってしまう だろう。例をあげると ```.php $array = ['りんご','ゴリラ'
php掲示板のログアウト画面をクッキーを用いて実装したいです。
ログイン状態からログアウトするためにクッキーを用いて実装しているのですが
右も左も分からなくなってしまいました。ログイン画面までは実装できています。
ログアウト画面に関しても、自分なりにググって、調べてコードを打ち込みましたが全然ダメです;(
どなたか詳しい方、御指導、御鞭撻頂けないでしょうか。
“`
session_start();if( !empty($_GET[‘btn_logout’]) ) {
unset($_SESSION[‘admin_login’]);
}
if( !empty($_POST[‘btn_submit’]) ) {
if( !empty($_POST[‘admin_password’]) && $_POST[‘admin_password’] === PASSWORD ) {
$_SESSION[‘admin_login’] = true;
} else {
$error_message[] = ‘ログインに失敗しました。’;
}
}setcookie(“name”, “test”);
echo $_COOKIE[“n
Chromeでajax処理のデバッグをする
## 概要
eccube4では商品をカートに入れる際にajax処理を使っているが、エラーになった時に詳細がわからなくて困っていた。## 手順
POSTMANを使ったやりかたもあるが、今回はChromeを使った場合の手順。**デベロッパーツールのネットワークタブを選択**
![Screen Shot 2020-03-31 at 11.50.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/126370/eff6540c-47ea-93ad-b9d5-4910e621a590.png)この状態でajaxの処理を実行する。
※今回はeccube4の商品詳細のソースなのでjavascriptのリダイレクト処理はコメントアウトなりして無効化しておく必要がある。“`javascript
//window.location.href = “{{ url(‘cart’) }}”;
“`Nameのところに新しくファイル?が追加されるのでファイルをクリックしてからHeaderのタブを選択する
!
PHP学習記 #2日目
#empty関数とisset関数の違い
empty関数は変数または配列がnullのときはTrue(空)を返す。isset関数は変数がnullのときはFalseを返す。要するに配列の要素にNULLが存在するかを調べるときはisset関数、空の要素が存在するかを調べるときはempty関数を利用する。#Web APIとは
APIとは「Application Programming Interface」の略であり、アプリケーション同士を繋ぐものを指している。よって、Web APIとはHTTP通信方式によってネットワークから呼び出すAPIである。#namespaceとは
namaspeceは名前空間であり、通常同じファイルに同じクラスや関数名、定数名は存在することが出来ないが、名前空間によって関連するクラスや、インターフェース、関数、定数などをグループ化することができる。そのため、名前空間を指定しておくことで、作成したクラスが、他のクラスの関数などと名前が衝突することを防ぐことができる。
CakePHP3で別々のデータベースのテーブルをjoinする方法
## app.phpに接続情報を明記
2つの「datebase_aのcommentsテーブル」と「datebase_bのusersテーブル」が存在するとします。(usersテーブルとcommentsテーブルを別のデータベースで管理するのはあくまで例です)
1つのusersに複数のcommentsが紐づきます。config/app.phpに接続情報を明記しましょう。
“`php:app.php
‘Datasources’ => [
‘default’ => [
‘className’ => ‘Cake\Database\Connection’,
‘driver’ => ‘Cake\Database\Driver\Mysql’,
‘persistent’ => false,
‘host’ => ‘localhost’,
‘username’ => ‘user_a’,
‘password’ => ‘password’,
‘database’ => ‘databa
CakePHP3で複数でデータベースに接続する方法
config/app.phpに接続情報を明記しましょう。
“`php:app.php
‘Datasources’ => [
‘default’ => [
‘className’ => ‘Cake\Database\Connection’,
‘driver’ => ‘Cake\Database\Driver\Mysql’,
‘persistent’ => false,
‘host’ => ‘localhost’,
‘username’ => ‘user_a’,
‘password’ => ‘password’,
‘database’ => ‘database_a’,
‘encoding’ => ‘utf8’,
‘timezone’ => ‘UTC’,
‘cacheMetadata’ => true,
‘log’ => false,
],
‘database_b’ => [
LaravelでjQueryを使ってAjax通信する時のURLの書き方は注意!
こんにちは、Web初心者のはるまきです。Qiita初投稿!
LaravelでJavaScriptを記述する時のパスの書き方には少し注意が必要だなと思ったので、メモしておきます。単純な話ですけど:sunny:
ルーターに合わせてパスを書こう!
初心者あるあるだとは思うんですが、「お手本通りやってもうごかな〜い!」。私の場合はjQueryのAjax通信が、それでした。お手本のコードはこんな感じでした。
“`javascript:hoge.js
$.ajax({
type: “GET”,
url: “some.php”, 他にも[../aaa/bbb/ccc.php]とか
}).done(function( msg ) {
alert( “データ保存: ” + msg );
});
“`htmlでスタイルシートやjsを読み込む時のパスは、「aaa/bbb/ccc.js」のような書き方ですよね。でもphpファイルを読み込む時(?)はどうやら違うようでした。web.phpファイルにあるルートのまま記述すれば、きちんと動きました。jsファイルとルーター
【Laravel】リレーションがある場合のファクトリによるテストデータの生成
ファクトリでリレーションがあるモデルのテストデータを生成するパターンをメモしています。
[公式リファレンス(データベースのテスト)](https://readouble.com/laravel/5.8/ja/database-testing.html?header=%25E3%2582%25A4%25E3%2583%25B3%25E3%2583%2588%25E3%2583%25AD%25E3%2583%2580%25E3%2582%25AF%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%25B3)
###親子関係
User(親)->Movie(子)のように、二つのテーブル間の親子関係なら公式リファレンスにある方法で簡単にテストデータを生成できます。each()とモデルのリレーションメソッドを利用します。“`php
factory(App\Models\User::class)
->create()
->each(function ($user) {
$user->movies()->save(factory(A
[PHP]paizaスキルチェック用標準入力取得方法のメモ
##はじめに
paizaのスキルチェックをしている際に複数の標準入力の取得方法が複数あったのでメモとして残します。##入力値取得方法まとめ
入力値は一律で下記に指定する通りとする
“`
1 23 4“`
###1.`fgets`メソッド
“`php
$input = fgets(STDIN);
//fgets()はファイルポインタを指定することで文字列を返します。
//STDINを指定することで標準入力を返すようになります。(STDIN:standard inputの略)
var_dump($input);
<<--出力内容-->>
string(7) “1 23 4
”
“`
`var_dump()`で`fgets()`の返り値を確認してわかる通り、最後の改行も一緒に取得してしまっていることがわかります。###2.`trim`メソッド
“`php
$input = trim(fgets(STDIN));
//trim()は引数のホワイトスペースを取り除くことができます。
var_dump($input);
<<--出力内容-->>
string(6)
Custom Field Suite のループで配列の最初の要素を取得する
WordPressのプラグイン Custom Field Suite のループで、最初の要素を取得したい時のコードです。
“`
get(‘loop’);
$loop_item = $loop[0][‘loop_item’];
echo $loop_item ;
?>
“`#参考URL
[Custom Field Suite でループ項目のn番目の画像があるかどうかでの条件分岐での不具合について](https://ja.wordpress.org/support/topic/custom-field-suite-%E3%81%A7%E3%83%AB%E3%83%BC%E3%83%97%E9%A0%85%E7%9B%AE%E3%81%AEn%E7%95%AA%E7%9B%AE%E3%81%AE%E7%94%BB%E5%83%8F%E3%81%8C%E3%81%82%E3%82%8B%E3%81%8B%E3%81%A9%E3%81%86%E3%81%8B%E3%81%A7/)
[初心者向け] laravel ルーティング
#ルーティング
アクセスしたアドレスを元に処理を割り振ること。phpのときはwebappっていうフォルダの中にhello.phpファイルを用意すれば、**http:〇〇_webapp/hello.php**でアクセスできましたが、
laravelでは特定のアドレスにアクセスすると、**そのアドレスに割り当てられたプログラム**が実行されます。
このように「〇〇というアドレスにアクセスしたら、✖️✖️という処理を呼び出す」
という関連付けを行っている機能。routesフォルダにあるweb.phpを開きます。
“`php:web.php
【初心者向け】PHPマスター講座 vol.3(代数演算子を学ぼう)
みなさんこんにちは!けいです
今回は「代数演算子」について解説します!!
#【PHPマスター講座】演算子とは
===========================
▶︎演算子(えんざんし)とは何か??
>ひとつ以上の値 (あるいはプログラミング用語における「式」) から別の値 (制御構造が式になるように) を生み出すもの(引用先:PHPマニュアル)
見てもらうとわかるように…
マニュアルは「これでもか!」ってくらい
簡単な内容を複雑に書く天才なので今回は演算子の中でも
初心者が一番初めに学んでおくべき【代数演算子】について
一つずつ丁寧に解説していきます!———————————
###▶︎【代数演算子の「6つの種類」】?
・「+」:「足し算」
・「-」:「引き算」
・「*」:「掛け算」
・「/」:「割り算」
・「%」:「剰余算」
・「***」:「累乗」———————————
代数演算子って言葉は難しそうですが
基本的には上記「6つの種類」しかありません!なんだ