こう見えて僕はそのむかし底辺SEでした
随分長いことITとかプログラムから離れておりましたが、
レンタルしてるConohaサーバーも、僕のブログのアクセスが雑魚すぎて暇そうにしておりましたし,
いくらかばかしでも収入を増やそうと再びプログラムでWEBサービスを立ち上げてみようと思い立ちました
昔とった杵柄、PHPというスクリプト言語の界隈を久々に覗いてみたらまあまあ結構変化していて
現役当時はFuelPHPなんてフレームワークを好んで使っていましたが、開発が止まっているのか長いこと更新がされていないようでした
じゃあ何が主流かって言うと、それは何が今のトレンディなPHPフレームワークなのかって言うと、
いつの間にかLaravelということになっておりました
「こんなにラクなフレームワークねえよ!」と評判がすげえよかったので期待して触り始めたのですが、
どんだけ楽とは言へ、ラクするためにもLaravelのお作法やらおまじないを覚えなければなりません
覚えることがまあまあ結構それなりにありまして
さらに僕には長い長いブランクもあり、どうしても
「言うほどラクか?」
とブツブツ思いながらLaravelと格闘する毎日
それでもまあ苦労したかいあって先日新サイトと仮想通貨ビットコインの自動売買プログラムをリリースしましたよ
長かった?
本日はそんな悪戦苦闘五穀豊穣百鬼夜行なLaravelで躓いたチップスが結構な量にまとまってきたので皆様にシェアしたいと思います
- Composerってなに?
- Composerがすでにあるけどコマンドが叩けないからComposer.phar使った
- vimなのでviewは.htmlで使いたい
- LaravelでVue
- jsがキャッシュされてハマった
- ユーザー認証を実装したい
- そろそろDBに手をつけ始める
- LaravelのDBで全文検索
- MariaDBで全文検索
- ajax(axios)で送った入力フォームの値がLaravelのContolerで取得できない
- Base table or view already exists: 1050 Table ‘failed_jobs’ already exists (なんちゃらエラー
- Bootstrap4を使ってみよう
- controller→blade→vueに変数を渡す
- UpdateOrInsertでUpdated_atが更新されない
- 移行、随時更新中であります?
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クラスを使えるようにしているのに、なぜか呼び出せない。
ファサードの使い方でハマった
ファサードの呼び出し方が間違ってた。
最初に辿り着いたこのページがよくなかったっす

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と現在時刻を追加で解決



コメント