優総研

ポートフォリオ制作なうなんだが…その3

 

 

 

 

usersテーブルにカラムを追加する

 

カラムを追加・変更するにはdoctrine/dbalが必要なのでインストール

 

カラム追加用のmigrationファイルを作成します。

–table=<テーブル名>で指定します。

 

comment, websiteカラムを追加しました。commentやwebsiteで検索をかけることはないのでprofileテーブルを作ってなどして正規化はしない。

 

反映させます。

 

シード用のデータを削除しておく。

comment, websiteカラムを追加したシーディングファイルにアップデートする。

 

反映させます。

 

 

SNS機能関係のテーブルとモデルを作る

modelとテーブルは同時に作ることも出来る

 

 

 

 

Laravelノウハウ

 

 

基本クラスのエイリアス

 

Composerのクラスの場所

 

 

ルーティングが有効になっているかの確認

 

{{ asset(‘パス’) }}

publicフォルダからパスで読んでくれる。

 

名前空間を追加したら、クラスが見つからない?

 

  1. composer.jsonに追加する。
  2. 名前空間を変更した場合は、『composer dump-autoload』を行う

 

 

CSRF記述の変更 “419 Page Expired”

Laravel5.6以上から記述が「@csrf」になった。

{{ csrf_field() }}でも記述エラーにならないが、CSRF機能が動いていない罠がある。

@csrfを使おう!

 

composer updateとcomposer install

原則は「$ docker-compose exec php-fpm composer install」を利用する。

  • そうしないと共同開発しているときにパッケージでバージョンの違いが出てします。
  • composer updateはパッケージのバージョンを上げたい時のみ利用する
    アップデートして正常動作したら、composer.lockはpushする

 

 

composer installしたライブラリの利用

 


サービスプロバイダにライブラリのサービスプロバイダ用クラスを登録して呼び出す。

 

例として

composerでsocialiteをインストールした。これをサービスプロバイダに登録する

classであるSocialiteServiceProviderは、

Laravel\Socialite\SocialiteServiceProviderというパスであることがわかります。

 

  1. config/app.phpのprovidersにライブラリのクラスを登録する
  2. config/app.phpのaliasesにエイリアスを登録する
  3. ライブラリの呼び出し
    ・use <登録したエイリアス名>
    ・クラスの中でエイリアス名::利用したいライブラリの関数()

 

config/app.php

config/app.phpのprovidersに「Laravel\Socialite\SocialiteServiceProvider::class」で登録します。

 

aliasesにも登録します。

 

コントローラで利用する

Http/Controllers/Auth/SocialController.php

use Socialite;でエイリアスで登録している名前で呼び出す。

クラスの中で

エイリアス名::利用したい関数()で利用できる。

 

Illuminate関連の標準ライブラリの場所

確認出来る。

使いたい時は

名前空間とクラスを確認して、

useで利用できる。

 

外部キーのエラーでmigrateに失敗する

  • 子テーブルのカラムを親キーのカラムと型を合わせる
  • 親テーブルのファイルの日時を古く、子テーブルの日時を新しくする
    親が先に生成されないと、親を参照している子テーブルは作れない。

 

 

DI

  • クラスの中で別のクラスをnewしない。
  • コンストラクタやセッターで別クラスを、依存性を注入する

 

ファサード

  1. サービスコンテナ(クラス)を作成
  2. サービスプロバイダを作成しサービスを1のサービスコンテナを登録
  3. ファサードを作成し名前を付ける
  4. $ composer dump autoload
  5. config/app.phpパスを通す

メリット

  • 一連の機能をまとめてコントローラの肥大化を抑える
  • メンテナンス性の向上
  • 単純にインスタンス化するよりメモリを食わない

デメリット

  • クラスの依存関係がわかりにくくなる
    →DIで対応できる

 

@see

 

 

マジックメソッド

 

Dockerの削除

 

すべてのコンテナの停止、コンテナ削除、イメージ削除

 

GitHub

 

HEADに戻す

 

 

branch開発

 

●developブランチ

 

●masterブランチ

 

ローカルのdevelopブランチを削除

通常はこれでOK

 

消せない場合は下記で

 

 

 

※git merge developでのエラー

 

masterにコミットして

 

リモートリポジトリmasterブランチにpushする

 

 

ひやりはっと戻す

ローカルリポジトリをある地点まで戻したい

 


ローカルリポジトリをある地点まで戻し、リモートリポジトリも戻す※劇薬

 

コミットをまとめる

 

 

1つ以上pickを残してまとめたいコミットをsに変える

 

これで何事もなければ、

リモートリポジトリにpushして完了

 

※エラーが出た場合

 

git rebase –continueでコンフリクトしたファイルが見れるので修正する。VS Codeだとここらへんの修正が楽。

それからgit add -AしてリモートにpushでOK

 

なんか操作してミスしてりとかだったらrebaseの作業を破棄することで戻れる

 

 

issue機能

 

issue#<番号>でイッシュー用のブランチを作成し作業する

 

commitする時にissue番号を入れるとリンクが作成される。

issueでcommit番号のハッシュ値を張ることで、リンクが出来る。

masterにも反映させる

 

issue#1ブランチの削除

 

 

課題点

ポートフォリオとして作るのが第一目的なので最後に回す。

  1. Google Books APIの作者データの配列が不安定で、出力に作者名を持たせるのを断念。
    →Amazon PA APIか楽天APIに切り替える。
  2. ログイン認証
    メール認証の追加、ソーシャルログイン認証を洗練させる。
    ※非機能部分なので見えにくいので後回し。

 

@see

 

デプロイ

 

Laravel

 

ログイン

 

ルーティング

 

オブジェクト指向

 

 

Eloquant

 

 

データベース設計

 

SNSテーブル設計例

 

 

ロック, デッドロック

 

 

Session

 

テストコード

 

 

メール認証

 

テストコード

 

 

オブジェクトキャッシュ, Redis

 

 

PHP

 

 

JSON

 

 

Bootstrap

 

Ajax

 

 

その他

 

 

YouTube

自責? おまえ嘘つくなよ

フリーターから正社員 インフラは2か月!

インフラにプログラミングは必要 SREのすすめ

ワイの部署がなくなりました

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)