20210325のlaravelに関する記事は14件です。

【Laravel】formからPOSTすると「Mixed Content Error」となりSSLが無効になる

HerokuにLaravelアプリをデプロイしてformからpostしたらいきなりSSLが無効になった。。。

検証ツールのconsoleでログを見てみると、、、

' was loaded over a secure connection, but contains a form that targets an insecure endpoint '

「安全な接続を介してロードされましたが、安全でないエンドポイントを対象とするフォームが含まれています」と書いてある。

実際の挙動も、直前のページまではhttpsだったがformのsubmit実行をしたら急にhttpになりSSLが無効に。。
当然chromeから「安全な接続ではないが送信しますか?」と聞かれ、意図した遷移がされない

原因

   <form method="post" action="{{ url('/if_stories') }}">
       @csrf
        
        
   </form>

urlヘルパーだと渡したパスがhttpで生成されてしまうらしい、、、なので

   <form method="post" action="{{ secure_url('/if_stories') }}">
       @csrf
        
        
   </form>

「完全なHTTPS URLを生成する」secure_urlヘルパーに差し替えてデプロイしなおしたら直りました!

参考にさせていただいた記事:
https://readouble.com/laravel/5.5/ja/helpers.html
https://www.fixes.pub/program/28119.html

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

laravel 検索機能の実装(スコープを使用)

はじめに

最近、AWSを使用してデプロイ中だが進まずに苦戦中です・・・。その為、中々投稿ができずAWSが気になってしまう日々が続いております。
Qiitaの記事が溜まってきたので気分転換にアウトプットをします。製作物に検索機能を実装したのでこちらを備忘録として投稿します。

投稿者の環境

MacBook Pro (13-inch, 2019, Two Thunderbolt 3 ports)
macOS Big Sur バージョン11.0.1
PHP 7.3.23
Laravel Framework 6.20.7

条件

今回はスコープを使います。
理由は基本的なデータベースの操作を行いたい上に、毎回同じ検索条件を書くならEloquentのクエリスコープを使った方が楽だからです。
また、検索機能で使用する時にWhere句はよく使います。このWere句ですが、条件式をモデルに定義(スコープ機能)して使いまわすことができます。今後、複雑な検索機能を実装するための基本となりますので実装してみました。

スコープを定義する

スコープを使用するには必ず最初にscopeを名前の初めに付ける必要があります。
また、最初の変数には必ず$queryを使用します。
上記の条件を纏めると以下のような書き方になります。

sample.php
//scopeの定義 

  public function scopeNameEqual($query, $変数)
  {
    return $query->where('検索したいカラム', $変数);
  }

モデルにスコープを使用

ポイント1 use($serachword)

無名関数(クロージャー)を使用します。

ポイント2 "%{$searchword}%"

ワイルドカード(今回は%を使用)を使って0文字以上の文字列を検索できるように組み込む。

Post.php
 public function scopeSearch($query, $searchword){

        return $query->where(function ($query) use($searchword) {
            $query->orWhere('name', 'like', "%{$searchword}%")
                ->orWhere('subject', 'like', "%{$searchword}%")
                ->orWhere('category', 'like', "%{$searchword}%")
                ->orWhere('message', 'like', "%{$searchword}%");
        });
    }

コントローラーに表示させる

Request(DI)を使用してDBに保存されているデータを表示させ、searchwordをviewファイルに渡すように記述する。

PostsController.php
public function index(Request $request) {
        $searchword = $request->searchword;
        $posts = Post::orderBy('created_at', 'desc') //新しい順に表示
        ->Search($searchword)
        ->paginate(10);

        return view('bulletin-boards.index',['posts'=> $posts,'searchword' => $searchword]); //配列を使ってviewファイルに二つの変数を渡す。
    }

検索ボックスをindexファイルに作成

検索結果を表示させるだけなのでGETにします。

index.blade.php
    <form class="form-inline" method="GET" action="{{ route('bulletin-board.index') }}">
        <input type="text" name="searchword" value="{{$searchword}}"  class="form-control mr-sm-2" placeholder="キーワードを入力">
        <button type="submit" class="search-box btn btn-info">検索</button>
    </form>
</div>

最後に

今回の検索機能は該当する箇所を全て出現させる単純な機能になります。今後はカテゴリー毎に検索できるように挑戦してみようと思います。

参考文献

スコープ機能について
laravel リクエストを実行する
laravel 公式
ワイルドカードとは?
補足 正規表現とワイルドカードの違い

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Laravelでsessionをfileからdatabaseに切り替える

目次

はじめに
データベースを用意
.envを編集
session.phpを編集
ターミナルでごにょごにょ

はじめに

基本的にはMAMPのバーチャルホストを使って開発しています。
ターミナルでローカルサーバーを立ち上げる方法もありますが、MAMP派なので箇所箇所の記述がターミナルのローカルサーバーには合わない場合があります。

さて、Laravelではセッションの保存先が標準ではfileになっています。
この保存先をデータベース(ローカル含む)上に切り替えたいと思います。

データベースを用意

何はともあれ、Laravelを導入したばかりの人はデータベースを作ってください。
作り方とデータベースへ接続するための設定はググればいくらでも情報が出てきます。
その際にいじるのは、「/.env」と「/config/database.php」の2つです。
今回はmanagerというデータベースを用意しました。
データベース名は各々に好きな名前に切り替えてください。

.envを編集

/env」を開くと、以下のコードが書かれた箇所があります。

SESSION_DRIVER=file

これをfileからdatabaseに書き換えてください。

SESSION_DRIVER=database

session.phpを編集

/config/session.php」を開くと、以下のコードが書かれた箇所があります。

session.php
'driver' => env('SESSION_DRIVER', 'file'),

これも.envと同じく、fileからdatabaseに書き換えてください。

session.php
'driver' => env('SESSION_DRIVER', 'database'),

ターミナルでごにょごにょ

ターミナル上でcdコマンドを使ってプロジェクトフォルダへ移動してください。
移動したら、以下のコマンドを実行してください。

$ php artisan session:table
$ php artisan migrate

#===================================================
#以下のようなログが出てきたら成功です
kuroudoimac:manager kuroudo$ php artisan session:table
Migration created successfully!
kuroudoimac:manager kuroudo$ php artisan migrate
Migration table created successfully.
Migrating: 2014_10_12_000000_create_users_table
Migrated:  2014_10_12_000000_create_users_table (18.75ms)
Migrating: 2014_10_12_100000_create_password_resets_table
Migrated:  2014_10_12_100000_create_password_resets_table (20.20ms)
Migrating: 2019_08_19_000000_create_failed_jobs_table
Migrated:  2019_08_19_000000_create_failed_jobs_table (19.77ms)
Migrating: 2021_03_25_072410_create_sessions_table
Migrated:  2021_03_25_072410_create_sessions_table (43.12ms)
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【独学 / 開発実務未経験】アプリ共有サービス" Ability ”の開発記録(Laravel / Vue / AWS / Docker / CircleCI)

挨拶

はじめまして!kamajiと申します?
開発実務未経験者が、人気の高まっている技術を筆頭にWebサービスを開発いたしましたので
紹介させていただきます。

自己紹介

経歴:4年生大学卒業後、メーカ系Sierに所属しており現在3年目(上流工程担当)
年齢:25歳
趣味:最新のアプリを触るのが好きで最近のお気に入りはNotionです。

? 開発したサービスについて

タイトル名:Ability

URL:https://ability-applications.com/home (PC推奨)
Github:https://github.com/tomoya-kamaji/ability

サービス概要

アプリに特化した情報共有サービス。
個人間でアプリをレビュー、共有することで自分にあったアプリを見つけることができます。

なぜ作成したのか?

ユーザに多くのアプリを知ってもらって、生活、業務に取り込んでいただくきっかけを作りたいという想いから作成しました。

■私の原体験
新卒でSierに入社した当初は、自分の業務のやり方がアナログで非効率でした。
頼まれたことを紙のメモや付箋を使って管理しますが、すぐになくしてしまう、字が汚くて読めない。結局役に立たない。
そんなとき、職場の周りの方が様々なアプリを使用して業務の改善を図っていました。(TrelloやOneNote、VSCODEなど)
見たことのないツール、サービスを匠に使いこなされていて感動したことを覚えています。
それを見てすぐにインストールして自分の業務に取り込んでいき、少しずつ業務を改善していくことができました。
使っていて自分の能力が高まった感覚になり、それからは最新のツールやサービスを見るのが大好きになりました?
そのときにもっと早くそういったサービスを知るきっかけを作りたいという思いから、個人でカジュアルにアプリを共有できるサービスを作成しました。

画面イメージ

Home画面

image-20210325173550373.png

アプリ検索画面

image-20210325173618877.png

レビュー投稿画面

image-20210325173741544.png

アプリ詳細画面

image-20210325173920674.png

image-20210325173949310.png

マイページ

image-20210325173843937.png

開発期間,時間

期間:年末年始~3月末の3ヶ月弱
時間:概算ですが学習時間と合わせて約300時間ほど費やしたと思います。
平日2時間。休日7~10時間。

週:約25時間
月:約100時間
合計:約300時間

仕事をやりながらだったので、コントロール性が高い朝に活動してました。(5~6時起き。リモート勤務に感謝)

学習方法

基本は独学で、途中からMENTAというサービスでメンターを雇い進捗管理をしていただきました。

学習教材

Udemy / Techpit / 書籍をメインに学習を行いました。詳細は最後に記載いたします。

? 機能一覧

アプリ検索機能

  • iThunsAPIを用いた検索

アプリ関連

  • ブックマーク機能

レビュー機能

  • レビュー登録
  • レビュー編集
  • レビュー削除

アプリ詳細画面

  • レビュー一覧
    • フィルタリング
  • iThunsAPIの情報から下記の情報を
    • アプリ名
    • アプリの詳細情報
    • アプリの新着情報
    • アプリの起業情報
    • アプリのスクリーンショット

ユーザ関連

  • マイページ編集機能
  • フォロー、フォロワー機能
  • ブックマーク一覧閲覧

⏱️ 技術・環境

フロントエンド

  • HTML / CSS / Sass / Boostrap
  • JavaScript / Vue.js

バッグエンド

  • PHP
  • Laravel
  • PHPinit

データベース

  • MySQL

インフラ

  • AWS(VPC、EC2、RDS、ACM、EBS、S3)

その他ツール

  • VSCODE
  • Git / Github
  • Docker:開発環境のみ
  • CircleCi

インフラ構成図

Ability インフラ構成.png

開発環境、本番環境

開発環境にDocker / docker-composeを使用しており、以下の3つの用途のコンテナを使用しています。

  1. Webサーバーのコンテナ: Nginx
  2. アプリケーションのコンテナ: PHP / Laravel / Vue.js
  3. DBのコンテナ: MySQL

本番環境もECSを使ってコンテナ化したかったのですが、謎のエラーがでて断念しました。
EC2でのデプロイ経験にも慣れるため、今回はEC2上で環境構築していく形で進めていきました。

?️ 技術選定理由

技術を選定する上で、主に以下2点の観点を重視して選択しました。

  • 独学でも学びやすく実装できるまでたどり着けるか(途中で挫折しないか)
  • 現状、主流のWebアプリ開発で使用されているか

バックエンド:PHP/Laravel

役割:サーバサイドとしての機能。認証、クエリ発行など

採用理由

  • 初学者から学ぶ方が多いので、記事が多数
  • Rubyと迷ったが、関西での求人数が多いという理由からPHPを選択

フロントエンド:Vue.js

役割実際にブラウザで表示される部分、SPAで運用

採用理由

  • Vueテンプレートで簡潔に記述でき、生のJSにくらべて可読性高い
  • Reactと迷ったが、Vueよりも記述量が多く実装に時間がかかるという観点で不採用

CSSフレームワーク:Bootstrap

役割:UIを整える

採用理由

  • グリットシステム採用で直感的に画面の配置ができる。(よくある画面になりがちなので、配色を変更するなどして工夫しました。)

開発環境:Docker/Docker-compose

役割仮想開発環境の構築

採用理由

  • 1度Dockefileを記述してしまえば、環境構築が簡単
  • 短時間で行える・コンテナ型の為、軽量

インフラ:AWS

役割本番環境の運用

採用理由

  • クラウドサービスの中でシェア率No.1。記事が豊富
  • Herokuだと起動するまで遅く、GCPは初学者の実装例が少ない

CI/CDツール:CircleCI

役割自動でテスト・デプロイを行う

採用理由

  • オンプレのJenkinsと比べて設定が簡単
  • 手動でテスト・デプロイをする必要性が少なくなる
  • GitActionsとかなり迷いました

? 工夫した点

iThunsAPIの使用

レビュー投稿機能を作成するにあたって、下記2点が課題としてはありました。

  • レビュー時にユーザからアプリ名や画像を登録してもらうのが大変
  • マスターテーブルを作成するのは開発者の管理工数がかかってしまうこと

iThunsAPIを利用してレビュー投稿することでユーザの投稿へのハードル下げました。
iThunsAPI仕様

UI/UX

  • サイトのデザインに一貫性をもたせて、見やすく
  • 既存のWebアプリのデザインを参考に。(食べログなど)

環境・技術

  • チーム開発を意識して、Gitにpushする際は必ずプルリクを出してGithub上でマージするように心掛けました。

最後に

今回、人生で始めてオリジナルアプリを制作しました。
挫折せずに完成までこぎつけたのは以下2点の要因が大きいかと思います。

  1. やらなければいけない状況に自分をおいたこと

    3月迄にWebアプリを作成すると周りの友人などに宣言し、完成しなければいけない状況に追い込み自分を奮い立たせていました。
    また、メンターを雇い学習の進捗管理を行っていただいたのも効果的でした。(メンターの方ありがとうございました!)

  2. インプットはそこそこでアウトプットをメインに

    完全に理解するのはかなり時間がかかるので、そこそこのインプットで終わり、アウトプットメインで学習を行いました。
    PHPとLaravelの学習は合わせて3週間くらいで終わらせたと思います。

今後も上記2点のことを意識して学習を勧めて行きたいと思っております!
最後まで読んでいただきありがとうございました?

? 学習教材一覧

Udemy

PHP+MySQL(MariaDB) Webサーバーサイドプログラミング入門
PHPからLaravelまで サーバーサイドをとことんやってみよう【初心者から脱初心者へ】【わかりやすさ最重視】
Vue.js入門決定版!jQuery を使わない Web 開発 - 導入からアプリケーション開発まで体系的に動画で学ぶ
Vue.js + Firebaseで作るシングルページアプリケーション

Techpit

Vue.js/Vuexを使ってTrello風アプリを作成しよう!
Laravel(+Vue.js)でSNS風Webサービスを作ろう!
Laravel × CircleCI × AWSで学ぶCI/CD

書籍

たった1日で基本が身に付く! Docker/Kubernetes超入門
ゼロからわかるAmazon Web Services超入門 はじめてのクラウド (かんたんIT基礎講座)

参考リンク

絶対に失敗しないDockerでLaravel+Vueの実行環境(LEMP環境)を構築する方法〜前編〜
絶対に失敗しないDockerでLaravel6.8+Vueの実行環境(LEMP環境)を構築する方法〜後編〜

etx....

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【独学 / 開発実務未経験】アプリ共有サービス「Ability」の開発記録(Laravel / Vue / AWS / Docker / CircleCI)

挨拶

はじめまして!kamajiと申します?
開発実務未経験者が、人気の高まっている技術を筆頭にWebサービスを開発いたしましたので
紹介させていただきます。

自己紹介

経歴:4年生大学卒業後、メーカ系Sierに所属しており現在3年目(上流工程担当)
年齢:25歳
趣味:最新のアプリを触るのが好きで最近のお気に入りはNotionです。

? 開発したサービスについて

タイトル名:Ability

URL:https://ability-applications.com/home (PC推奨)
Github:https://github.com/tomoya-kamaji/ability

サービス概要

アプリに特化した情報共有サービス。
個人間でアプリをレビュー、共有することで自分にあったアプリを見つけることができます。

なぜ作成したのか?

ユーザに多くのアプリを知ってもらって、生活、業務に取り込んでいただくきっかけを作りたいという想いから作成しました。

■私の原体験
新卒でSierに入社した当初は、自分の業務のやり方がアナログで非効率でした。
頼まれたことを紙のメモや付箋を使って管理しますが、すぐになくしてしまう、字が汚くて読めない。結局役に立たない。
そんなとき、職場の周りの方が様々なアプリを使用して業務の改善を図っていました。(TrelloやOneNote、VSCODEなど)
見たことのないツール、サービスを匠に使いこなされていて感動したことを覚えています。
それを見てすぐにインストールして自分の業務に取り込んでいき、少しずつ業務を改善していくことができました。
使っていて自分の能力が高まった感覚になり、それからは最新のツールやサービスを見るのが大好きになりました?
そのときにもっと早くそういったサービスを知るきっかけを作りたいという思いから、個人でカジュアルにアプリを共有できるサービスを作成しました。

画面イメージ

Home画面

image-20210325173550373.png

アプリ検索画面

image-20210325173618877.png

レビュー投稿画面

image-20210325173741544.png

アプリ詳細画面

image-20210325173920674.png

image-20210325173949310.png

マイページ

image-20210325173843937.png

開発期間,時間

期間:年末年始~3月末の3ヶ月弱
時間:概算ですが学習時間と合わせて約300時間ほど費やしたと思います。
平日2時間。休日7~10時間。

週:約25時間
月:約100時間
合計:約300時間

仕事をやりながらだったので、コントロール性が高い朝に活動してました。(5~6時起き。リモート勤務に感謝)

学習方法

基本は独学で、途中からMENTAというサービスでメンターを雇い進捗管理をしていただきました。

学習教材

Udemy / Techpit / 書籍をメインに学習を行いました。詳細は最後に記載いたします。

? 機能一覧

アプリ検索機能

  • iThunsAPIを用いた検索

アプリ関連

  • ブックマーク機能

レビュー機能

  • レビュー登録
  • レビュー編集
  • レビュー削除

アプリ詳細画面

  • レビュー一覧
    • フィルタリング
  • iThunsAPIの情報から下記の情報を
    • アプリ名
    • アプリの詳細情報
    • アプリの新着情報
    • アプリの起業情報
    • アプリのスクリーンショット

ユーザ関連

  • マイページ編集機能
  • フォロー、フォロワー機能
  • ブックマーク一覧閲覧

⏱️ 技術・環境

フロントエンド

  • HTML / CSS / Sass / Boostrap
  • JavaScript / Vue.js

バッグエンド

  • PHP
  • Laravel
  • PHPinit

データベース

  • MySQL

インフラ

  • AWS(VPC、EC2、RDS、ACM、EBS、S3)

その他ツール

  • VSCODE
  • Git / Github
  • Docker:開発環境のみ
  • CircleCi

インフラ構成図

Ability インフラ構成.png

開発環境、本番環境

開発環境にDocker / docker-composeを使用しており、以下の3つの用途のコンテナを使用しています。

  1. Webサーバーのコンテナ: Nginx
  2. アプリケーションのコンテナ: PHP / Laravel / Vue.js
  3. DBのコンテナ: MySQL

本番環境もECSを使ってコンテナ化したかったのですが、謎のエラーがでて断念しました。
EC2でのデプロイ経験にも慣れるため、今回はEC2上で環境構築していく形で進めていきました。

?️ 技術選定理由

技術を選定する上で、主に以下2点の観点を重視して選択しました。

  • 独学でも学びやすく実装できるまでたどり着けるか(途中で挫折しないか)
  • 現状、主流のWebアプリ開発で使用されているか

バックエンド:PHP/Laravel

役割:サーバサイドとしての機能。認証、クエリ発行など

採用理由

  • 初学者から学ぶ方が多いので、記事が多数
  • Rubyと迷ったが、関西での求人数が多いという理由からPHPを選択

フロントエンド:Vue.js

役割実際にブラウザで表示される部分、SPAで運用

採用理由

  • Vueテンプレートで簡潔に記述でき、生のJSにくらべて可読性高い
  • Reactと迷ったが、Vueよりも記述量が多く実装に時間がかかるという観点で不採用

CSSフレームワーク:Bootstrap

役割:UIを整える

採用理由

  • グリットシステム採用で直感的に画面の配置ができる。(よくある画面になりがちなので、配色を変更するなどして工夫しました。)

開発環境:Docker/Docker-compose

役割仮想開発環境の構築

採用理由

  • 1度Dockefileを記述してしまえば、環境構築が簡単
  • 短時間で行える・コンテナ型の為、軽量

インフラ:AWS

役割本番環境の運用

採用理由

  • クラウドサービスの中でシェア率No.1。記事が豊富
  • Herokuだと起動するまで遅く、GCPは初学者の実装例が少ない

CI/CDツール:CircleCI

役割自動でテスト・デプロイを行う

採用理由

  • オンプレのJenkinsと比べて設定が簡単
  • 手動でテスト・デプロイをする必要性が少なくなる
  • GitActionsとかなり迷いました

? 工夫した点

iThunsAPIの使用

レビュー投稿機能を作成するにあたって、下記2点が課題としてはありました。

  • レビュー時にユーザからアプリ名や画像を登録してもらうのが大変
  • マスターテーブルを作成するのは開発者の管理工数がかかってしまうこと

iThunsAPIを利用してレビュー投稿することでユーザの投稿へのハードル下げました。
iThunsAPI仕様

UI/UX

  • サイトのデザインに一貫性をもたせて、見やすく
  • 既存のWebアプリのデザインを参考に。(食べログなど)

環境・技術

  • チーム開発を意識して、Gitにpushする際は必ずプルリクを出してGithub上でマージするように心掛けました。

最後に

今回、人生で始めてオリジナルアプリを制作しました。
挫折せずに完成までこぎつけたのは以下2点の要因が大きいかと思います。

  1. やらなければいけない状況に自分をおいたこと

    3月迄にWebアプリを作成すると周りの友人などに宣言し、完成しなければいけない状況に追い込み自分を奮い立たせていました。
    また、メンターを雇い学習の進捗管理を行っていただいたのも効果的でした。(メンターの方ありがとうございました!)

  2. インプットはそこそこでアウトプットをメインに

    完全に理解するのはかなり時間がかかるので、そこそこのインプットで終わり、アウトプットメインで学習を行いました。
    PHPとLaravelの学習は合わせて3週間くらいで終わらせたと思います。

今後も上記2点のことを意識して学習を勧めて行きたいと思っております!
最後まで読んでいただきありがとうございました?

? 学習教材一覧

Udemy

PHP+MySQL(MariaDB) Webサーバーサイドプログラミング入門
PHPからLaravelまで サーバーサイドをとことんやってみよう【初心者から脱初心者へ】【わかりやすさ最重視】
Vue.js入門決定版!jQuery を使わない Web 開発 - 導入からアプリケーション開発まで体系的に動画で学ぶ
Vue.js + Firebaseで作るシングルページアプリケーション

Techpit

Vue.js/Vuexを使ってTrello風アプリを作成しよう!
Laravel(+Vue.js)でSNS風Webサービスを作ろう!
Laravel × CircleCI × AWSで学ぶCI/CD

書籍

たった1日で基本が身に付く! Docker/Kubernetes超入門
ゼロからわかるAmazon Web Services超入門 はじめてのクラウド (かんたんIT基礎講座)

参考リンク

絶対に失敗しないDockerでLaravel+Vueの実行環境(LEMP環境)を構築する方法〜前編〜
絶対に失敗しないDockerでLaravel6.8+Vueの実行環境(LEMP環境)を構築する方法〜後編〜

etx....

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Laravelエラーの解決方法 メモ

※随時追加していく

基本的にlaravel 6.x

Seederでダミーデータ作成時

.実行したコマンド
php artisan db:seed --class=FooSeeder
.エラー
   Illuminate\Contracts\Container\BindingResolutionException  : Target class [FooSeeder] does not exist.

  at /var/www/project/vendor/laravel/framework/src/Illuminate/Container/Container.php:805
    801|
    802|         try {
    803|             $reflector = new ReflectionClass($concrete);
    804|         } catch (ReflectionException $e) {
  > 805|             throw new BindingResolutionException("Target class [$concrete] does not exist.", 0, $e);
    806|         }
    807|
    808|         // If the type is not instantiable, the developer is attempting to resolve
    809|         // an abstract type such as an Interface or Abstract Class and there is

  Exception trace:

  1   ReflectionException::("Class FooSeeder does not exist")
      /var/www/project/vendor/laravel/framework/src/Illuminate/Container/Container.php:803

  2   ReflectionClass::__construct()
      /var/www/project/vendor/laravel/framework/src/Illuminate/Container/Container.php:803

  Please use the argument -v to see more details.
.解決方法
composer dump-autoload
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Laravel入門書 出版しました。【動かして学ぶ!Laravel開発入門】原稿は3年間の授業で積み上げた資料が元に (動画あり)

◇自己紹介

はじめまして。著者、山崎です。『動かして学ぶ!Laravel開発入門』を書きました。

QiitaではこんなLaravel記事を書いてきました。

更新!!Laravel6/7 (laravel/ui)でのLogin機能の実装方法

Laravel8 : 新ログイン「jetstream」を早速試してみたメモ

Laravel8 (laravel/ui)でのLogin機能の実装方法

Laravel DB.com 操作マニュアル。 〜コード書かずに超スピード開発(DEMO動画あり)〜

もしかしたら、PHP/Laravel系の人では見ていただいた記事もあるのではと思います。
なので、Laravel好きなPHPerと見ていただいて良いと思います(^^)

◇なぜ出版することに?

個人として大学・大学院・スクールとプログラミング系の講義を受け持っており、
3年前、Laravelの授業内容を新しく作るのがきっかけで授業資料として書き始めました。

ちなみに、授業資料作成の流れは、Documentページを見ながら1つのアプリケーションを構築し、その手順(コマンド・画面遷移等...)を学生にも分かりやすく、イメージがつきやすいように「まとめ」ていくのが私流です。(それを何十回もスパイラルに繰り返し、情報を整理していき、見せれる段階まで持っていきます)

Laravel授業やるようになり継続的にアウトプット、Qiita、Twitter、LaravelDB.comの運用、PHPカンファレンス等でLaravelについて発信してたので、たまたま編集者の方からお声がけいただいた次第です。

授業資料も、たまたまWordに纏めていったのが功を奏した感じです。
書籍の場合txtやWord等で編集者さんに渡します。パワポはNGですね(今まで3社で本を出しましたが、私が関わってきた編集者さんでパワポOKだった人はいません)。

3年間、授業資料としてアップデートを重ねてきた内容で、
「初めてLaravelを学習」するための、必要・不必要な情報の整理ができた資料がほぼ完成されていたので、そのままを本用に変更していった感じです。

3年の積み重ねですね。。。
本を書くために執筆したというよりは初学者に作ってもらうための資料が本になったと言えるかもしれません。

◇本の開発環境

  • 受業人数多い&OS・バージョン、バラバラ問題:
    前述のとおり私は大学・院・スクールでも教えてますが、学生はWindows率が多い印象をもっています。正直、OSもスペックもバージョンもバラバラです。統一して同じ画面で授業となると、それも何十人も同時となると、環境を合わせるのが、かなり難しいんですね。もちろんスキルもバラバラ。

  • Cloud9を採用
    そこで、AWS/Cloud9であれば「同じ環境、同じコマンド、同じ画面」全て統一して進められることで採用しました。
    ※3年前はCloud9はAWSに買収される前でしたので、無料で簡単にアカウントも発行できました。今のCloud9とは少し違いました。
    現在は、AWSと統合してAWSのアカウントが必要です。

  • 学生の場合
    「学生用アカウント」で登録できるのでクレジットカード登録不要(先生側から発行が可能)

  • 一般の場合
    クレジットカード登録は必要ですが「12ヶ月無料枠(1ヶ月750時間無料✕12ヶ月)」があるので、無料枠内の設定で学べます。

  • 「12ヶ月無料枠(1ヶ月750時間無料✕12ヶ月)」
    1ヶ月(31日)✕24時間 = 744 なので、Cloud9の場合は設定を変えなければ無料枠を超えることはありません。本書でも、今回の動画でも解説しています。

 【無料枠の設定は「本書・以下動画」でも解説してます】

◇本のサンプルコード

  • シンプルなCRUD:初学者には「できるだけ少ない情報」で完結できるのが良いと考えているからです。
  • Githubに「サンプルコード」と「コマンドリスト」を用意しています(コピーして使用できます)。

◇初学者の成長に「必要なもの」に焦点を当ててます

  • 最小の単位で挫折せずに「一度作り切る」こと。
  • 成長に必要な「小さな成功体験」をしてもらうこと。

クラウド環境初めての人のために動画で解説

・クラウド無料枠の設定ポイント
・環境構築
書籍で詳しく解説してるので「動画はあくまでも流れを見る」感じです(書籍2~3章)。

※AmazonLinux2を使用する場合:https://youtu.be/ISiU3nCSgh0

最後に、フレームワークの学習ポイント

「途中で止まらないこと」です。100%理解して進むことは不可能ですので、半信半疑でOK!!まずは一度、書籍を終わらせてそれを「3回くらい」繰り返します。何と!それで理解してるのです!!それがフレームワークを覚えるコツです。
「NG: 理解してから作る」→ 「Good:作って理解する」が正しい学び方の1つです!

以上

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Laravel入門書 出版しました。【動かして学ぶ!Laravel開発入門】原稿は3年間の授業で積み上げた資料が基に (動画あり)

◇自己紹介

はじめまして。著者、山崎です。『動かして学ぶ!Laravel開発入門』を書きました。

QiitaではこんなLaravel記事を書いてきました。

更新!!Laravel6/7 (laravel/ui)でのLogin機能の実装方法

Laravel8 : 新ログイン「jetstream」を早速試してみたメモ

Laravel8 (laravel/ui)でのLogin機能の実装方法

Laravel DB.com 操作マニュアル。 〜コード書かずに超スピード開発(DEMO動画あり)〜

もしかしたら、PHP/Laravel系の人では見ていただいた記事もあるのではと思います。
なので、Laravel好きなPHPerと見ていただいて良いと思います(^^)

◇なぜ出版することに?

個人として大学・大学院・スクールとプログラミング系の講義を受け持っており、
3年前、Laravelの授業内容を新しく作るのがきっかけで授業資料として書き始めました。

ちなみに、授業資料作成の流れは、Documentページを見ながら1つのアプリケーションを構築し、その手順(コマンド・画面遷移等...)を学生にも分かりやすく、イメージがつきやすいように「まとめ」ていくのが私流です。(それを何十回もスパイラルに繰り返し、情報を整理していき、見せれる段階まで持っていきます)

Laravel授業やるようになり継続的にアウトプット、Qiita、Twitter、LaravelDB.comの運用、PHPカンファレンス等でLaravelについて発信してたので、たまたま編集者の方からお声がけいただいた次第です。

授業資料も、たまたまWordに纏めていったのが功を奏した感じです。
書籍の場合txtやWord等で編集者さんに渡します。パワポはNGですね(今まで3社で本を出しましたが、私が関わってきた編集者さんでパワポOKだった人はいません)。

3年間、授業資料としてアップデートを重ねてきた内容で、
「初めてLaravelを学習」するための、必要・不必要な情報の整理ができた資料がほぼ完成されていたので、そのままを本用に変更していった感じです。

3年の積み重ねですね。。。
本を書くために執筆したというよりは初学者に作ってもらうための資料が本になったと言えるかもしれません。

◇本の開発環境

  • 受業人数多い&OS・バージョン、バラバラ問題:
    前述のとおり私は大学・院・スクールでも教えてますが、学生はWindows率が多い印象をもっています。正直、OSもスペックもバージョンもバラバラです。統一して同じ画面で授業となると、それも何十人も同時となると、環境を合わせるのが、かなり難しいんですね。もちろんスキルもバラバラ。

  • Cloud9を採用
    そこで、AWS/Cloud9であれば「同じ環境、同じコマンド、同じ画面」全て統一して進められることで採用しました。
    ※3年前はCloud9はAWSに買収される前でしたので、無料で簡単にアカウントも発行できました。今のCloud9とは少し違いました。
    現在は、AWSと統合してAWSのアカウントが必要です。

  • 学生の場合
    「学生用アカウント」で登録できるのでクレジットカード登録不要(先生側から発行が可能)

  • 一般の場合
    クレジットカード登録は必要ですが「12ヶ月無料枠(1ヶ月750時間無料✕12ヶ月)」があるので、無料枠内の設定で学べます。

  • 「12ヶ月無料枠(1ヶ月750時間無料✕12ヶ月)」
    1ヶ月(31日)✕24時間 = 744 なので、Cloud9の場合は設定を変えなければ無料枠を超えることはありません。本書でも、今回の動画でも解説しています。

 【無料枠の設定は「本書・以下動画」でも解説してます】

◇本のサンプルコード

  • シンプルなCRUD:初学者には「できるだけ少ない情報」で完結できるのが良いと考えているからです。
  • Githubに「サンプルコード」と「コマンドリスト」を用意しています(コピーして使用できます)。

◇初学者の成長に「必要なもの」に焦点を当ててます

  • 最小の単位で挫折せずに「一度作り切る」こと。
  • 成長に必要な「小さな成功体験」をしてもらうこと。

クラウド環境初めての人のために動画で解説

・クラウド無料枠の設定ポイント
・環境構築
書籍で詳しく解説してるので「動画はあくまでも流れを見る」感じです(書籍2~3章)。

※AmazonLinux2を使用する場合:https://youtu.be/ISiU3nCSgh0

最後に、フレームワークの学習ポイント

「途中で止まらないこと」です。100%理解して進むことは不可能ですので、半信半疑でOK!!まずは一度、書籍を終わらせてそれを「3回くらい」繰り返します。何と!それで理解してるのです!!それがフレームワークを覚えるコツです。
「NG: 理解してから作る」→ 「Good:作って理解する」が正しい学び方の1つです!

以上

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【動かして学ぶ!Laravel開発入門】原稿は3年間の授業で積み上げた資料が基に (動画あり)

◇自己紹介

はじめまして。著者、山崎です。『動かして学ぶ!Laravel開発入門』を書きました。

QiitaではこんなLaravel記事を書いてきました。

更新!!Laravel6/7 (laravel/ui)でのLogin機能の実装方法

Laravel8 : 新ログイン「jetstream」を早速試してみたメモ

Laravel8 (laravel/ui)でのLogin機能の実装方法

Laravel DB.com 操作マニュアル。 〜コード書かずに超スピード開発(DEMO動画あり)〜

もしかしたら、PHP/Laravel系の人では見ていただいた記事もあるのではと思います。
なので、Laravel好きなPHPerと見ていただいて良いと思います(^^)

◇なぜ出版することに?

個人として大学・大学院・スクールとプログラミング系の講義を受け持っており、
3年前、Laravelの授業内容を新しく作るのがきっかけで授業資料として書き始めました。

ちなみに、授業資料作成の流れは、Documentページを見ながら1つのアプリケーションを構築し、その手順(コマンド・画面遷移等...)を学生にも分かりやすく、イメージがつきやすいように「まとめ」ていくのが私流です。(それを何十回もスパイラルに繰り返し、情報を整理していき、見せれる段階まで持っていきます)

Laravel授業やるようになり継続的にアウトプット、Qiita、Twitter、LaravelDB.comの運用、PHPカンファレンス等でLaravelについて発信してたので、たまたま編集者の方からお声がけいただいた次第です。

授業資料も、たまたまWordに纏めていったのが功を奏した感じです。
書籍の場合txtやWord等で編集者さんに渡します。パワポはNGですね(今まで3社で本を出しましたが、私が関わってきた編集者さんでパワポOKだった人はいません)。

3年間、授業資料としてアップデートを重ねてきた内容で、
「初めてLaravelを学習」するための、必要・不必要な情報の整理ができた資料がほぼ完成されていたので、そのままを本用に変更していった感じです。

3年の積み重ねですね。。。
本を書くために執筆したというよりは初学者に作ってもらうための資料が本になったと言えるかもしれません。

◇本の開発環境

  • 受業人数多い&OS・バージョン、バラバラ問題:
    前述のとおり私は大学・院・スクールでも教えてますが、学生はWindows率が多い印象をもっています。正直、OSもスペックもバージョンもバラバラです。統一して同じ画面で授業となると、それも何十人も同時となると、環境を合わせるのが、かなり難しいんですね。もちろんスキルもバラバラ。

  • Cloud9を採用
    そこで、AWS/Cloud9であれば「同じ環境、同じコマンド、同じ画面」全て統一して進められることで採用しました。
    ※3年前はCloud9はAWSに買収される前でしたので、無料で簡単にアカウントも発行できました。今のCloud9とは少し違いました。
    現在は、AWSと統合してAWSのアカウントが必要です。

  • 学生の場合
    「学生用アカウント」で登録できるのでクレジットカード登録不要(先生側から発行が可能)

  • 一般の場合
    クレジットカード登録は必要ですが「12ヶ月無料枠(1ヶ月750時間無料✕12ヶ月)」があるので、無料枠内の設定で学べます。

  • 「12ヶ月無料枠(1ヶ月750時間無料✕12ヶ月)」
    1ヶ月(31日)✕24時間 = 744 なので、Cloud9の場合は設定を変えなければ無料枠を超えることはありません。本書でも、今回の動画でも解説しています。

 【無料枠の設定は「本書・以下動画」でも解説してます】

◇本のサンプルコード

  • シンプルなCRUD:初学者には「できるだけ少ない情報」で完結できるのが良いと考えているからです。
  • Githubに「サンプルコード」と「コマンドリスト」を用意しています(コピーして使用できます)。

◇初学者の成長に「必要なもの」に焦点を当ててます

  • 最小の単位で挫折せずに「一度作り切る」こと。
  • 成長に必要な「小さな成功体験」をしてもらうこと。

クラウド環境初めての人のために動画で解説

・クラウド無料枠の設定ポイント
・環境構築
書籍で詳しく解説してるので「動画はあくまでも流れを見る」感じです(書籍2~3章)。

※AmazonLinux2を使用する場合:https://youtu.be/ISiU3nCSgh0

最後に、フレームワークの学習ポイント

「途中で止まらないこと」です。100%理解して進むことは不可能ですので、半信半疑でOK!!まずは一度、書籍を終わらせてそれを「3回くらい」繰り返します。何と!それで理解してるのです!!それがフレームワークを覚えるコツです。
「NG: 理解してから作る」→ 「Good:作って理解する」が正しい学び方の1つです!

以上

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Laravel クエリビルダー メモ

よく忘れるのでメモ
※随時追加していく

ANDとORの入れ子かつ変数を使いたいとき

orWhereuse を使う

条件の例(まともな例じゃないけどとりあえず)
active = 1 かつ
((price < 100 かつ status = 1) または (fruit = 'apple' かつ status = 2))

$price = 100;
$fruit = 'apple';

$foo = Foo::where('active', 1)
    ->where(function ($query) use ($price) {
        $query->where('price', '<' $price)
            ->where('status', 1);
    })
    ->orWhere(function ($query) use ($fruit) {
        $query->where('fruit', $fruit)
            ->where('status', 2);
    })
    ->get() 

複数の条件でjoinSubするやつ(あとで書く)

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【laravel】`base table or view already exists 1050 table 'users' already exists`が出た時の、php artisan migrate:fresh以外の解決法

はじめに

 laravelでmigrationをタイポで間違えて、やり直した際に、base table or view already exists 1050 table 'users' already existsが出た際に、よくある解決法が、php artisan migrate:fresh

でも、ローカルのDBをリセットしたくない!! って思いませんか。
そんな思いを持った私が見つけたもう一つの解決方法です!!

ぜひ、php artisan migrate:freshをせずに、マイグレーションを成功させましょう!

前提

環境

PHP 7.4.16
Laravel 6.20.17
mysql 8.0.23
nginx 1.18.0

作りたいテーブル

location_tagテーブル

カラム名 外部キー
id int
location_id int
tag_id int

エラー文 (php artisan migrate 実行時)

   Illuminate\Database\QueryException  : SQLSTATE[42S01]: Base table or view already exists: 1050 Table 'location_tag' already exists (SQL: create table `location_tag` (`id` bigint unsigned not null auto_increment primary key, `location_id` bigint not null, `tag_id` bigint not null, `created_at` timestamp null, `updated_at` timestamp null) default character set utf8mb4 collate 'utf8mb4_unicode_ci')

解決方法

1

php artisan tinkerで`tinker開く

2

テーブルが存在するか確認する

$Schema::hasTable("location_tag");
//location_tagはデーブル名
=> true

3

特定のテーブルだけ削除する

$Schema::drop("location_tag");

4

テーブルが消えたか確認する

$Schema::hasTable("location_tag");
//location_tagはデーブル名
=> false

5

tinkerを終了し、マイグレーションの状態を確認する

php artisan migrate:status

6

マイグレーションをrollbackする

php artisan migrate:rollback

7

再度、migrateする

php artisan migrate

これにて完了!!

参考

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

GitHub ActionsでLaravelのテストをするのにMySQLを利用する

GitHub ActionsでLaravelテストするのにMySQLを利用するのにハマったのでメモ。

前提

こちらの記事で利用したLaravelプロジェクトとGitHub Actionsのワークフローをカスタマイズします。

手順

ワークフロー作成

以下のようにワークフローを作成します。

name: Laravel

on:
  push:
    branches:
    - main
    - feature/**
  pull_request:
    branches:
    - develop
    - main

jobs:
  laravel-tests:

    runs-on: ubuntu-latest

    services:
      mysql:
        image: mysql:5.7
        ports:
          - 3306:3306
        env:
          MYSQL_ROOT_PASSWORD:
          MYSQL_DATABASE: hoge_app
          MYSQL_USER: root
          MYSQL_PASSWORD:
          MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'
        options: --health-cmd "mysqladmin ping -h localhost" --health-interval 20s --health-timeout 10s --health-retries 10

    steps:
    - uses: actions/checkout@v2
    - name: cache vendor
      id: cache
      uses: actions/cache@v1
      with:
        path: ./vendor
        key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
        restore-keys: |
          ${{ runner.os }}-composer-
    - name: composer install
      if: steps.cache.outputs.cache-hit != 'true'
      run: composer install -n --prefer-dist
    - name: copy .env
      run: cp .env.example .env
    - name: generate key
      run: php artisan key:generate
    - name: migrate
      run: php artisan migrate
      env:
        DB_HOST: 127.0.0.1
    - name: Execute tests (Unit and Feature tests) via PHPUnit
      env:
        DB_HOST: 127.0.0.1
      run: vendor/bin/phpunit

MySQLの設定

servicesmysqlを定義します。環境変数は.envの内容を反映できないので、そのまま指定します。
GitHubのSecretsを利用するとパスワードはそちらから指定することもできますが今回はプロジェクトの.env.exampleの内容と同じにしています。

GitHubのSecretsを活用して、GitHub Actionsで安全に機密情報を扱う - Qiita
https://qiita.com/developer-kikikaikai/items/60b209c065f076dca7a1

optionsでMySQLが起動したかヘルスチェックするようにします。

    services:
      mysql:
        image: mysql:5.7
        ports:
          - 3306:3306
        env:
          MYSQL_ROOT_PASSWORD:
          MYSQL_DATABASE: hoge_app
          MYSQL_USER: root
          MYSQL_PASSWORD:
          MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'
        options: --health-cmd "mysqladmin ping -h localhost" --health-interval 20s --health-timeout 10s --health-retries 10

マイグレーションとテスト

envDB_HOSTを指定します。開発環境だと.env.examplemysqlとDockerコンテナの名前を指定していますが、それだとGitHub上だと接続できません。

    - name: migrate
      run: php artisan migrate
      env:
        DB_HOST: 127.0.0.1
    - name: Execute tests (Unit and Feature tests) via PHPUnit
      env:
        DB_HOST: 127.0.0.1
      run: vendor/bin/phpunit

ローカルで動作確認

こちらのツールを利用するとローカル環境で動作確認ができます。

nektos/act: Run your GitHub Actions locally ?
https://github.com/nektos/act#installation

1点ハマりどころがあり、GitHub Actionsが提供するサービスコンテナがnektos/actでは現状未実装となるため、ローカルとGitHubとで差異があります。

サービスコンテナについて - GitHub Docs
https://docs.github.com/ja/actions/guides/about-service-containers

Github actions - Services fails locally · Issue #247 · nektos/act
https://github.com/nektos/act/issues/173

ただ、ワークフローでDB_HOST: 127.0.0.1と指定することで、開発環境のMySQLへ接続できるので、開発環境のDockerコンテナを起動したまま、actコマンドを実行してあげるとローカル環境でもワークフローが実行できます。

> cd <プロジェクトのディレクトリ>
> ./vendor/bin/sail up -d
> act -P ubuntu-latest=nektos/act-environments-ubuntu:18.04

image.png
実行結果をみると、Run migrateは実行されているものの、マイグレーション自体は実行されていないことが確認できます。(開発環境でマイグレーションが実行済みの場合)

開発環境のDockerコンテナを落とすと、ワークフローがエラーになることも確認できます。

> ./vendor/bin/sail down
> act -P ubuntu-latest=nektos/act-environments-ubuntu:18.04

image.png

GitHub上で動作確認

ワークフローをGitHubリポジトリにpushしてワークフローが動作するか確認します。

> git branch feature/use-mysql-on-github-actions
> git checkout feature/use-mysql-on-github-actions
> git add .github/workflows/unittest.yml
> git commit -m 'Fix: GitHub ActionsのワークフローでMySQLを利用するようにしました。'
> git push git push --set-upstream origin feature/use-mysql-on-github-actions

GitHubで確認するとエラーなくテストが実行できたことが確認できます。
image.png
image.png
image.png
image.png
やったぜ

参考

GitHub Actionsを利用してLaravelのテストを自動化してみた - Qiita
https://qiita.com/kai_kou/items/4f850f7308eb0d3e0b48

GitHubのSecretsを活用して、GitHub Actionsで安全に機密情報を扱う - Qiita
https://qiita.com/developer-kikikaikai/items/60b209c065f076dca7a1

nektos/act: Run your GitHub Actions locally ?
https://github.com/nektos/act#installation

Number of ways to setup database in Github actions | by Darren Liew | Medium https://medium.com/@ldarren/number-of-ways-to-setup-database-in-github-actions-2cd48df9faae

GitHub Actionsを使ってLaravelアプリケーションをCI/CDする | SEEDS Creators' Blog | 株式会社シーズ https://www.seeds-std.co.jp/blog/creators/2020-08-19-233031/

Mysql service never comes up healthy in action - Code to Cloud / GitHub Actions - GitHub Support Community
https://github.community/t/mysql-service-never-comes-up-healthy-in-action/16890

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【Laravel】「ヘルパ」PHP関数を使っていこう

今回はヘルパ関数について改めて触れる機会があったので
忘備録としてまとめておく。
公式を参考にしているのでより正確な解釈を知りたい方は
最後にリンクを載せてますのでそちらを御覧ください!

「ヘルパ」PHP関数とは

Laravelで定義されている便利なグローバル関数。
例えばよく使うものでいくと
autholdenvあたりがすぐに触れるでしょうか。
ちなみに僕は上記の関数は使ってましたがグローバル関数としての認識をもって使ってませんでした。
極端に詳しく調べなくてもいいかと思いますが仕組みを理解して使うと
簡潔な実装につながるかと思うので機会があれば処理を追ってみるといいでしょう。

様々な関数

割とたくさんの関数があるのでよく使うものを纏めておきます。

// 指定された変数の内容を表示し、スクリプトの実行を停止します。
dd($value);

// 環境変数の値を取得します。取得できない場合はデフォルト値を返します。
env('APP_ENV', 'production');

// セッションに一時保持データーとして保存されている直前の入力値を取得します。
old('value', 'default');

// Authenticatorインスタンスを返します。Authファサードの代わりに使用できます。
auth()->user();

// viewインスタンスを返します。
view('auth.login');

// 指定値を返します。関数の2番目の引数としてクロージャを渡たすと、
// クロージャが実行され、その戻り値を返します
$callback = function ($value) {
    return (is_numeric($value)) ? $value * 2 : 0;
};
$result = with(5, $callback);

// 指定した名前付きルートのURLを生成します。
route('route.name', ['id' => 1]);

// 設定変数の値を取得します。
// 設定値はファイル名とアクセスしたいオプションを「ドット」記法で指定します。
// デフォルト値が指定でき、設定オプションが存在しない時に返されます。
config('app.timezone', $default)

上記以外にも便利な関数はたくさんあります。
ぜひともまずは使ってみる、試してみることをやっていきましょう!

参考
laravel.jp

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Laravel学習、始めました。(Laravel、MySQL環境構築)

こんにちは!

ここ数日でphp、Laravelの学習をし始めました。
とりあえず環境構築関係から投稿していきます。

先週に2日間くらいphpの基礎構文と、Laravel,Lumenドキュメントや色々なソースコードを拝見しました。
正直あまりわかっていませんが、細かくアウトプットするのも重要だと思い記事にしました。

目次

Laravel環境構築
MySQL環境構築
感想

Laravel環境構築

Homebrew install

まずphpをインストールするのにHomebrewが必要なので、入っていない方は下記コマンドでinstall。

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

バージョン確認。

% brew -v
Homebrew 3.0.9

オッケーですね。

php install

次にphpのインストール。ここが少し時間かかりますね。

% brew install php

バージョン確認。

% php -v
PHP 8.0.3 (cli) (built: Mar  4 2021 20:45:17) ( NTS )

オッケーです。

Composer install

Laravelの導入で必要になるcomposerをインストールします。

brew install composer

バージョン確認。

% composer
   ______
  / ____/___  ____ ___  ____  ____  ________  _____
 / /   / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__  )  __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
                    /_/
Composer version 2.0.11 2021-02-24 14:57:23

なんかカッコイイ。オッケーですね。

Laravel install

下記コマンドでLaravelのインストールとプロジェクトを作成をできます

% composer create-project "laravel/laravel=8.*" {プロジェクト名}

バージョン確認。

% cd {プロジェクト名}
% php artisan --version
Laravel Framework 8.34.0

できました!

MySQL環境構築

私が今Laravelの学習で実際にプロジェクトを作って動かしながら学習しており、MySQLを使ってますので環境構築を記載いたします。

brew install mysql@5.7

なぜ5.7なのかといいますと、入社前にJavaを学習していた時に5.7ならできるのに8だとできない!という状況に陥ったため、ここでも5.7にしてます。それだけなのです。。。。
上記コマンドを打つと、ターミナルに
スクリーンショット 2021-03-24 23.35.28.png
こんな文章が出てきます。
「まずパスを通してね!」的な感じなので、

% echo 'export PATH="/usr/local/opt/mysql@5.7/bin:$PATH"' >> ~/.zshrc
% source ~/.zshrc

コピペします。

バージョン確認します。

 % mysql --version
mysql  Ver 14.14 Distrib 5.7.32, for osx10.16 (x86_64) using  EditLine wrapper

オッケーです。

起動してみます。

% brew services start mysql@5.7
==> Successfully started `mysql@5.7` (label: homebrew.mxcl.mysql@5.7)

うむ。大丈夫ですね。

ではログインしてみましょう

% mysql -u root -p

パスワードは初期状態なら何も入力せずにEnterでログインできます。
無事にログインできたら、ターミナルがzshではなく、mysqlになってるはずです。

musql>

こんな感じで。

感想

いかがでしたでしょうか。
本当は実際に今Laravelで制作しているものの途中経過や、現時点で使うコマンドや説明を載せたかったのですが、
また別の記事でまとめたいと思います。

数日前まで
「echo」ってなんぞや。から始まり、
「INSERT文もSELECT文も無いのになんでDBの操作できてるんだ!?」という状態でしたが、
なんとなくふんわりと理解できてきたので、またアウトプットしていきたいと思います。
フレームワークって便利ですね。
初心者日記みたいな投稿で申し訳ありません。
以上です。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む