ブランク明けの元SEがPHPフレームワークLaravelで躓いたことリスト

こう見えて僕はそのむかし底辺SEでした

随分長いことITとかプログラムから離れておりましたが、

レンタルしてるConohaサーバーも、僕のブログのアクセスが雑魚すぎて暇そうにしておりましたし,

いくらかばかしでも収入を増やそうと再びプログラムでWEBサービスを立ち上げてみようと思い立ちました

昔とった杵柄、PHPというスクリプト言語の界隈を久々に覗いてみたらまあまあ結構変化していて

現役当時はFuelPHPなんてフレームワークを好んで使っていましたが、開発が止まっているのか長いこと更新がされていないようでした

じゃあ何が主流かって言うと、それは何が今のトレンディなPHPフレームワークなのかって言うと、

いつの間にかLaravelということになっておりました

「こんなにラクなフレームワークねえよ!」と評判がすげえよかったので期待して触り始めたのですが、

どんだけ楽とは言へ、ラクするためにもLaravelのお作法やらおまじないを覚えなければなりません

覚えることがまあまあ結構それなりにありまして

さらに僕には長い長いブランクもあり、どうしても

「言うほどラクか?」

とブツブツ思いながらLaravelと格闘する毎日

それでもまあ苦労したかいあって先日新サイトと仮想通貨ビットコインの自動売買プログラムをリリースしましたよ

長かった?

本日はそんな悪戦苦闘五穀豊穣百鬼夜行なLaravelで躓いたチップスが結構な量にまとまってきたので皆様にシェアしたいと思います

  1. Composerってなに?
  2. Composerがすでにあるけどコマンドが叩けないからComposer.phar使った
  3. vimなのでviewは.htmlで使いたい
    1. ViewファサードでaddExtensionがうまくいかない
    2. ファサードの使い方でハマった
  4. LaravelでVue
    1. でも何かおかしい
    2. Laravel6だった
  5. jsがキャッシュされてハマった
    1. Laravelのキャッシュクリアを試すがダメ。
    2. head内にno-cache→ダメ
    3. web.xml.jsでversions()メソッドを使って解決
  6. ユーザー認証を実装したい
    1. Laravelにはユーザー認証機能が実装済み
    2. あれ、make:authがない
    3. またLaravel6の呪いが
    4. php artisan ui vue –authで解決
  7. そろそろDBに手をつけ始める
    1. DBの設定情報どこに書くんだ?
    2. php artisan migrateでエラー
    3. set global innodb_large_prefix = ON試す=>ダメ
    4. カラム長を255から191に変更
    5. メール認証を実装
    6. Userテーブルにverified_atカラムがある?
    7. App/User.phpにMustVerifyEmailをimplementsしよう
    8. php artisan ui vue –authを念の為再実行
    9. メール認証機能も実装完了?
  8. LaravelのDBで全文検索
    1. MysqlというよりMariaDBだった
    2. 基本的にMysqlと考えていいのかな
  9. MariaDBで全文検索
    1. Mroongaが必要らしい
    2. Conohaのkusanagiならコマンド1発さ
    3. 手動yumインストールで解決
    4. Mroongaインストール完了
    5. テーブルのエンジンをMroongaに変更
    6. フルテキストインデックスを使ったSELECT文
  10. ajax(axios)で送った入力フォームの値がLaravelのContolerで取得できない
  11. Base table or view already exists: 1050 Table ‘failed_jobs’ already exists (なんちゃらエラー
  12. Bootstrap4を使ってみよう
    1. bg-colorのgradiaitが使えない?
  13. controller→blade→vueに変数を渡す
  14. UpdateOrInsertでUpdated_atが更新されない
  15. 移行、随時更新中であります?

Composerってなに?

すっかり記憶の彼方に消え去っていたのですが、確かSymfonyか何かのフレームワークいじった時に使ったような?

当時のSymfonyはバージョン1系。今見たら最新はバージョン5wwで腐?

時の流れを感じます

「ComposerはPHPフレームワークやってる人ならお馴染みなので解説は不要かと思いますが、、、」

なんて親切なエンジニアさんのサイトにあって、うーんやっぱり僕は不真面目なITエンジニアだったんだなあ。

Composerがすでにあるけどコマンドが叩けないからComposer.phar使った

Composerインストールしてパス通そうとしたら既にあるよってエラーになって、

かといってcomposerって撃ってもコマンドとして使えなくって、「なんだぁ?」ってなったけど使えるからこれでいいやってComposer.pharでパス通してそのまま使うことにしました。

vimなのでviewは.htmlで使いたい

僕はVim使いのVimmerです。

Laravelではviewファイルの事をbladeと呼ぶみたいです。

bladeの拡張子は.blade.phpです。

そうです、このままではhtmlのシンタックスハイライトが効きません。

vimはシンタックスハイライトを拡張子で判断します。

だからbladeファイルと認識される拡張子を.phpじゃなくて.htmlにしたいのです。

=>bladeをaddExtensionしたい時はblade

ViewファサードでaddExtensionがうまくいかない

ViewクラスのaddExtensionメソッドで追加できるはずなのに、「そんなクラスねえよ」と怒られる。

ファサードでViewクラスを使えるようにしているのに、なぜか呼び出せない。

ファサードの使い方でハマった

ファサードの呼び出し方が間違ってた。

最初に辿り着いたこのページがよくなかったっす

Facades - Laravel 6.x - The PHP Framework For Web Artisans
Laravel is a PHP web application framework with expressive, elegant syntax. We’ve already laid the foundation — freeing you to create without sweating the small...

Viewクラスのパスが

Illuminate\View\Factory

になってんだもん。

use Illuminate\Support\Facades\View;

で解決。

LaravelでVue

Laravelが公式にサポートしているフロント再度JS・Vueを使いたい!

でも何かおかしい

ゴーグルで情報を検索してもnpm installすれば入るらしい。

が、npm installしても僕のLaravelにはVueの入る気配がない

Laravel6だった

何かおかしいと思ったら、Laravel6からVueは標準じゃなくて外部ライブラリになった。
ひっかかった情報は全部Laravel5だった。

=>composer laravel/ui で解決

jsがキャッシュされてハマった

やったあこれでVueが使えるぞ?と大喜びでVueをいじくり回す。

が、色々試すけど画面に反映されない。

Laravelのキャッシュクリアを試すがダメ。

php artisan cache:clear
php artisan config:clear
php artisan route:clear
php artisan view:clear

head内にno-cache→ダメ

web.xml.jsでversions()メソッドを使って解決

めでたしめでたし?

ユーザー認証を実装したい

Webサイトのすべての機能を使うにはアカウント登録が必要。

そのためユーザー認証機能を実装したい。

Laravelにはユーザー認証機能が実装済み

コマンド数発で実装できるってよ。

あれ、make:authがない

php artisan make:authコマンドやっても「そんなんねえよ」と怒られる。

相変わらずスムーズに事がすすまない。

またLaravel6の呪いが

Laravel6からユーザー認証機能はVueに統合?された模様。
まあ、登録画面とかパスワードリセット画面とか機能と画面はワンセットですからわからんでもないです。

それにしても最新過ぎるバージョンを入れるのも、少し考えものなのかもしんない。

php artisan ui vue –authで解決

めでたしめでたし?

そろそろDBに手をつけ始める

ここらでartisan migrateでDB周りもやっていきます。

DBの設定情報どこに書くんだ?

DBのユーザー名とかパスワードとかの設定はどこに書くんだ?

laravelホームディレクトリに.envがあるのでそこへ。

php artisan migrateでエラー

ユーザー認証機能で使うusersテーブルのmigrateでエラー発生

usersテーブルのemailカラムがSpecified key was too long; max key length is 767 bytes発生

set global innodb_large_prefix = ON試す=>ダメ

何でダメなん?

カラム長を255から191に変更

何か気がすすまないけどemailカラムの長さを191に変更してエラーを回避

メール認証を実装

一応ログイン画面とユーザー認証機能は実装できたけど、メール認証機能が実装されていなかった。

でたらめなメールアドレスや人のメールアドレスで登録できてしまう。

それ、全然ダメよね。

Userテーブルにverified_atカラムがある?

メール認証は自力で実装なのかな?とちょっとusersテーブル眺めてたら、verified_atというカラムを発見。
どうやらLaravel5.7から実装済みのようです。素敵?

App/User.phpにMustVerifyEmailをimplementsしよう

これもなんかコマンド使うんかな?と思いきや手動。

まあそのくらいやりますよ?

php artisan ui vue –authを念の為再実行

view/auth以下のbladeを上書きするよ?って聞かれるので、すべてYes
login.blade
passwords/confirm.blade
passwords/email.blade
passwords/reset.blade
register.blade
verify.blade
home.blade
layout/app.blade
などなど

メール認証機能も実装完了?

LaravelのDBで全文検索

フレーズ命のWebサービスなので、全文検索は外せない。

そこでLaravelのDBをちょっと覗いてみた。

MysqlというよりMariaDBだった

LaravelというよりはレンタルサービスConoha&Kusanagiの仕様かな。

MariaDBというDBでした。何これ。

基本的にMysqlと考えていいのかな

Mysqlの上位互換という認識。

MariaDBで全文検索

Mroongaが必要らしい

MariaDBでフルテキストインデックス全文検索を使うには、Mroongaというアドオンが必要らしい。

Conohaのkusanagiならコマンド1発さ

kusanagi addon install mroonga

のはずだったのですが、ここでエラー発生。

/usr/share/mroonga/install.sql: そのようなファイルやディレクトリはありません

とか

GPG Keys are configured as: file:///etc/pki/rpm-gpg/RPM-GPG-KEY-groonga

とか。

どこに行ってもスムーズに事は運びませんな。

手動yumインストールで解決

失敗してたとこだけ手動のyumでインストールしてエラー回避。

yum install -y https://packages.groonga.org/centos/groonga-release-latest.noarch.rpm

Mroongaインストール完了

show engines;でmroongaのsupportがYESになっているのを確認

テーブルのエンジンをMroongaに変更

Alter table table_name engine mroonga;

テストデータを投入する段階で動作テストします。

フルテキストインデックスを使ったSELECT文

SELECT * FROM table_name WHERE MATCH(‘coulmn_name’) AGAINST(‘+-search_words’ IN BOOLEAN MODE);

ajax(axios)で送った入力フォームの値がLaravelのContolerで取得できない

なんのこたないaxios側からgetで送ってた

Laravelのrequestはpostの値しか取得しない?

ぅおおおおお時間返せ!

Base table or view already exists: 1050 Table ‘failed_jobs’ already exists (なんちゃらエラー

php artisan migrateコマンドを実行すると上記エラーが!

マイグレーションの履歴を管理してるテーブルが既にあるよ!ってエラーなんですが、そりゃあるだろうよ!

マイグレーションができない状態で困っていましたが、

php artisan migrate:fresh

で解決。よくわからんが。一旦freshすると以降は

php artisan migrate

でもエラーはでなくなった。

でもこれ一旦全部のテーブル消して再度create tableするっぽい

テストデータとか入れてたのが空っぽになるよ

Bootstrap4を使ってみよう

bg-colorのgradiaitが使えない?

グラデーションにならんぞ!
 

controller→blade→vueに変数を渡す

ControllerからCompact関数でbladeに渡す

bladeからコンポーネント呼び出しの引数でわたす

配列はv-bind&json_encodeで渡してやらんとうまくいかなかった

$必要

Vueでは$不要
<option v-for=”(val in lists)”

UpdateOrInsertでUpdated_atが更新されない

保存するたびに勝手に更新されると思ってたけど、自動では更新されないらしい

fillableにUpdated_atを追加、更新データに明示的にUpdated_atと現在時刻を追加で解決

移行、随時更新中であります?

コメント

タイトルとURLをコピーしました