- 0.1. 【Azure】の【Azure App Service】を使ってみた!
- 0.2. get,findなどの返り値表
- 0.3. 【PHP】標準入力で受け取った、空白を挟んだ複数の値をそれぞれ変数に入れる【初心者】
- 0.4. 投稿機能を作る
- 0.5. モデルの編集
- 0.6. コントローラーの編集
- 0.7. リレーション先の要素のレコードを取得する
- 0.8. リレーション先の取得
- 0.9. Laravelでよく使うコマンド集
- 0.10. Laravelでsqliteを使う方法
- 0.11. Illuminate\Database\QueryException SQLSTATE[23000]: Integrity constraint violation: 19 NOT NULL constraint failedの解決策
- 0.12. 【Laravel】DBテーブル作成方法
- 0.13. laravelでフォロー機能を作成(多対多のリレーション)
- 0.14. Laravelのルーティングで「全てのパス」を指定する
- 0.15. PHP8.0検証ついでにxdebugの警告解消
- 0.16. Laravelのモデルのリレーション先のモデル(親/子)までまとめて削除する
- 0.17. モデルとコントローラーの編集
- 0.18. クリック時にブラウザのアラートを表示させる【blade】
- 0.19.
- 0.20.
- 0.21. bladeで自作関数を使う方法
- 0.22. クラスの作成
- 0.23. bladeテンプレートで使う
- 0.24. LaravelでS3にアップする画像のリサイズ
- 0.25. 自作関数の作り方
- 0.26. クラスの作成
- 0.27. エイリアスの登録
- 0.28. コントローラーで使う
- 0.29. コレクションや、配列の中身を取得する
- 0.30. 連想配列のキーを取得
- 0.31. 連想配列の値を取得
- 0.32. Laravel 5.5 ECサイト ユーザーにメールを送る
- 1. mailbleクラスを作成
【Azure】の【Azure App Service】を使ってみた!
#はじめに
【Azure App Service(PHPバージョン)】ですがシンプルなPHPのみ、
複雑な環境設定はいらないなどのサイト公開するのに使うのが個人的にいいのかなと思ったりしています。サービスデプロイ時に何使うが適当かと思い、とりあえず使ってみよう!共有しよう!っといったものです。
こういうの個人で使う時『お金かかりすぎないかな〜〜〜』って思うのは私だけでしょうか?:tired_face:分からないことだらけなのでオススメなどありましたら、
優しく教えて頂けると感謝感激です。:bow:後自分的にとらえやすい言い方に変換しています。
ドキュメント見たい方のためにその場その場でリンク貼るようにしていますので許してください:bow:後、macでやってます。
#Azureとは?
『microsoft』さんが提供するクラウド上でサービスを運用するためのサービス。
[Azureとは何ですか?](https://docs.microsoft.com/en-us/azure/guides/developer/azure-developer-guide#what-is-az
get,findなどの返り値表
# find()
`App\Model::find(1)` の返り値は**Modelのオブジェクト**
# get()
`App\Model::where(‘id’,1)->get()` の返り値は**Collectionクラス**
(中身はModelのオブジェクト。ゆえに`foreach()`で回せば各々の値を取得できる。)# first()
`App\Model::where(‘id’,1)->first()` の返り値は**Modelのオブジェクト**
※もしなかった場合は`NULL`を返す
以下[tinker](https://github.com/laravel/tinker)(laravel用REPL)で実行した際の様子
“`
$ php artisan tinker
New version is available (current: v0.8.14, latest: v0.8.15)
>>> App\Model::find(1)
=> App\Model{#458
id: 1,
name: “モデル1”,
【PHP】標準入力で受け取った、空白を挟んだ複数の値をそれぞれ変数に入れる【初心者】
空白を挟んだ複数の値(例:2 3)を標準入力で受け取ってそれぞれを変数に入れたい。
自分が知ってるやり方は2つ
#####方法(1つ目)
“`hoge.php
//文字前後の空白や改行コードとか消して$numに代入
$num = trim(fgets(STDIN));//空白を区切りに配列に分割して代入
$array = explode(” “,$num);//配列の1つ目を変数に代入
$first = $array[0];//配列の2つ目を変数に代入
$second = $array[1];“`
#####方法(2つ目)
“`huga.php
//文字前後の空白や改行コードとか消して$numに代入
$num = trim(fgets(STDIN));//空白で区切って、それぞれ$firstと$secondに代入
[$first,$second] = explode(” “,$num);
“`このだいぶ短くなったほうは、「分割代入」っていうらしいです。
###補足(2020/12/3 更新)
※@il9437様からご指摘頂きました。あり
投稿機能を作る
モデルの編集
“`Artist.php
class Artist extends Model
public function followingArtist()
{
// このユーザがフォロー中のユーザのidを取得して、配列にする
$userIds = $this->followings()->pluck(‘users.id’)->toArray();
// このユーザのidもその配列に追加
$userIds[] = $this->id;
// それらのユーザが所有するアーティストを絞り込み、返す。
return Artist::whereIn(‘user_id’, $userIds);
}
“`コントローラーの編集
“`ArtistController.php
public function output()
{
/*————-自分だけのタイムライン—————–
リレーション先の要素のレコードを取得する
リレーション先の取得
“`Model.php
belongsTo(Artist::class);
}//そのユーザーが所有するアーティスト達を取得し、アーティスト達の user_id を全て取り出す。
public function work_artist_userid()
{
$artists = $this->artist()->get();
foreach ($artists as $artist){return $artist->u
Laravelでよく使うコマンド集
##プロジェクト作成
“`Ruby:Laravel6のプロジェクト作成
$ composer create-project –prefer-dist laravel/laravel=”6.*” sample_app
“`##Controller作成
“`Ruby:UserController作成
$ php artisan make:controller UserController
“`##Model作成
“`Ruby:Userモデル作成
$ php artisan make:model User
“`##サーバー起動
“`Ruby:サーバー起動
$ php artisan serve
“`##マイグレート
“`Ruby:マイグレート
$ php artisan migrate
“`##DBデーブル作成
“`Ruby:Userテーブル作成
$ php artisan make:migration create_users_table
“`##コンソール起動
“`Ruby:tinker
$ php artisan ti
Laravelでsqliteを使う方法
##1. database直下にデータベースファイルを作成
“`Ruby:
$touch database/database.sqlite
“`##2. .envを編集
“`Ruby:
DB_CONNECTION=sqlite
# DB_HOST=127.0.0.1
# DB_PORT=3306
# DB_DATABASE=homestead
# DB_USERNAME=homestead
# DB_PASSWORD=secret
“`
DB_CONNECTIOをsqliteにして、それ以外はコメントアウト##3.最後にマイグレーション
“`Ruby:
$ php artisan migrate
“`
Illuminate\Database\QueryException SQLSTATE[23000]: Integrity constraint violation: 19 NOT NULL constraint failedの解決策
##結論
マイグレーションファイルがおかしかった“`Ruby:Before
bigIncrements(‘id’);
$table->string(‘title’)/*ここ*/;
$table->text(‘content
【Laravel】DBテーブル作成方法
##1. マイグレーションファイル作成
“`Ruby
$ php artisan make:migration create_posts_table
Created Migration: 2020_12_02_092200_create_possts_table
“`##2. マイグレーションファイルを編集
“`Ruby:database/migrations/2020_12_02_092200_create_posts_table.php
laravelでフォロー機能を作成(多対多のリレーション)
引用:【Laravel + Vue.js講座】いいね機能を作ろう!! part1 – 【質問回答は無料】
こちらの動画を参考にいいね機能を作成したとき、これを応用すればフォロー機能も作成できるのではないかと考え作成
環境
PHP 7.3.11
Laravel Framework 7.29.3## マイグレーション
“`****_**_**_******_create_follow_users_table.php
Schema::create(‘follow_users’, function (Blueprint $table) {
$table->bigIncrements(‘id’);
$table->unsignedBigInteger(‘followed_user_id’)->index();
$table->unsignedBigInteger(‘following_user_id’)->index();
Laravelのルーティングで「全てのパス」を指定する
Laravelのルーティングで「全てのパス」を指定するには、
**{all}** をパスの部分に指定すればよい。
下記のように。“`routes/web.php
Route::get(‘{all}’, function() {
return redirect(‘/’);
});
“`上記をweb.phpの末に記載すれば、GETリクエストでマッチするパスがなかった際に、ルートにリダイレクトされるようになる。
PHP8.0検証ついでにxdebugの警告解消
いつも検証用に使ってるDockerコンテナをPHP8.0にバージョンを上げたので、確認したところ
“`sh:console
% docker-compose exec app php -v +[master]
Xdebug: [Config] The setting ‘xdebug.remote_autostart’ has been renamed, see the upgrading guide at https://xdebug.org/docs/upgrade_guide#changed-xdebug.remote_autostart (See: https://xdebug.org/docs/errors#CFG-C-CHANGED)
Xdebug: [Config]
Laravelのモデルのリレーション先のモデル(親/子)までまとめて削除する
モデルとコントローラーの編集
“`Model.php
class Artist extends Model
{
//このアーティストが所有するタグ(子1へのリレーション)
public function tags()
{
return $this->hasMany(Tag::class);
}
//このアーティストが所有する作品(子2へのリレーション)
public function works()
{
return $this->hasMany(Work::class);
}
}
“`“`Controller.php
public function destroy($id)
{
$artistEdit = Artist::findOrFail($id);if (\Auth::id() === $artistEdit->user_id) {
クリック時にブラウザのアラートを表示させる【blade】
“`script.js
function delete_alert(e){
if(!window.confirm(‘本当に削除しますか?’)){
window.alert(‘キャンセルされました’);
return false;
}
document.deleteform.submit();
};
“`“`blade.php
@if($roletype_id <= ($item->roletype_id))—————–
bladeで自作関数を使う方法
クラスの作成
モデル.phpに定義する
“`app/Model.php
public function 自作関数()
{$artists = $this->artist()->get();
foreach ($artists as $artist){}return $artist->user_id;
}
“`bladeテンプレートで使う
“`blade.php
@if(Auth::id() === $workEdit->自作関数()){!! Form::model($workEdit, [‘route’ => [‘artist.destroy’, $workEdit->id], ‘method’ => ‘delete’]) !!}
{!! Form::submit(‘作品を削除’, [‘class’ => ‘btn btn-danger’,’onclick’ => ‘delete_alert(event);return
LaravelでS3にアップする画像のリサイズ
## 目的
AWSの経費削減の為に画像品質を保証する前提でS3にアップする画像の圧縮をして欲しいと言うデイレクターからの要望を実現## 必要条件
[1] ライブラリであるGDのインストール“`
$ yum install php-gd# GD ライブラリの情報を確認
php -r ‘print_r(gd_info());’
“`
[2] Intervention Imageのインストール“`
$ composer require intervention/imageあるいはcomposer.jsonファイルに下記を追加
“intervention/image”: “^2.5”,
“`
## Laravelの設定
app\config\app.phpファイルに下記を追加
[1] Intervention Imageのサービスプロバイダの追加“`
‘providers’ => [
Intervention\Image\ImageServiceProvider::class,
],
“`
[2] Intervention Imageの
自作関数の作り方
クラスの作成
app以下にLibraryディレクトリを作ってFunctions.phpを作成。(ディレクトリの場所はどこでもいいです。)このファイルの中に自作メソッドを保管していきます。
staticメソッドのfunctionを作ります。“`app/Library/Functions.php
class MyFunctions
{
public static function xxxx()
{
//処理内容
}
}
“`エイリアスの登録
“`config/app.php
config/app.php のaliasesに作成したクラスを追加します。‘aliases’ => [
‘MyFunctions’ => App\Library\Functions::class,
],
“`コントローラーで使う
コントローラーにuse MyFunctionsで使用可能。呼び出すときは MyFunctions::xxxx()で。
エイリアスの登録を行わなかった場合はus
コレクションや、配列の中身を取得する
連想配列のキーを取得
連想配列のキーを取得するためには、array_keys関数を使用します。
“`sample.php
“リンゴ”, “orange” => “ミカン”, “lemon” => “レモン”);
// 連想配列のキーと値を出力
foreach ($fruits as $key => $value) {
echo $key; // $keyにキーの文字が入っている
echo “‘s value is “;
echo $value; // $valueにデータが入っている
echo ”
“;
}
“`
“`
[0]=>”apple”,[1]=>”orange”,[2]=>”lemon”
“`
array_keys関数は連想配列のキーの文字だけを取得する関数です。取得したキーの文字は配列として格納されます。連想配列の値を取得
“`sample.php
“リンゴ”, “orange”
Laravel 5.5 ECサイト ユーザーにメールを送る
LaravelでMailableを使った簡単なメール通知を行う方法を書きます。
ECサイトで受注後にユーザーにメールを送るという設定です。
Laravel5.5です。参考にしたサイト https://readouble.com/laravel/5.5/ja/mail.html
mailbleクラスを作成
make:mailコマンドを使用して、mailableクラスを生成します。
“`
$ php artisan make:mail OrderAccepted
“`app/Mail/OrderAccepted.phpというファイルが作られます。
~~~php:app/Mail/OrderAccepted.php
LaravelからMySQLに接続する
#設定方法
Laravelを生成したフォルダに__.env__というファイルがあります。
このファイルにLaravelからデータベースに接続するための情報が保存されています。###設定①
DB_CONNECTIONを`mysql`に設定してください。“`
DB_CONNECTION=mysql
“`###設定②
DB_PORTを`3306`に設定してください。
これは、MySQLのポート番号ですね。“`
DB_PORT=3306
“`###設定③
DB_DATABASEに接続したい`データベース名`を設定してください。“`
DB_DATABASE=dbName
“`###設定④
DB_USERNAMEに接続する際の`ユーザー名`を設定してください。
__※注意 必ず使用するユーザーは、グローバルレベルに設定してください__“`
DB_USERNAME=userName
“`
###設定⑤
DB_PASSWORDに接続する際のユーザー名に対する`パスワード`を設定してください。“`
DB_PASSWORD=password
“`