write ahead log

ロールフォワード用

laravel

Laravel Duskで要素数を数えたり現れる順序をテストしたかった

直接的なアサーションがなかったから作った. TestCaseでuseして使うtraitにしてみた. たぶんMacroを用意するのが正当なアプローチだと思うんだけど, 調べるの面倒で雑に書いてしまった. myAssertElementsCountIs($browser, 'tbody>tr', 1); */ p…

Laravel duskでinput type dateの入力を行いたい

なんかチョットハマったので. <input type="date" id="due_date"> に対してこうやりたいんだけど, どうもうまくいかない. ->type('#due_date', '2020-01-01') 調べるとこうやるらしい. ->keys('#due_date', '2020', '{tab}', '01', '01') 微妙に面倒.

Laravel Duskでテストする時に毎回ログアウトしたい

なんか毎回ググってる気がするからメモっとく. 場合によっちゃDuskTestCase.phpに入れてもいいかもしれない. public function setUp(): void { parent::setUp(); // 毎回ログアウトするためクッキーを消す foreach (static::$browsers as $browser) { $brows…

Laravelでテストする時にパスワードの更新を確認する

パスワードのハッシュを確認するメソッドを毎回忘れる. // Hashファサードがいるよね use Illuminate\Support\Facades\Hash; // 普通の項目は以下でテストできる $this->assertDatabaseHas('users', [ 'name' => '更新した名前', 'email' => '更新したメール…

CentOS7にLaravel6 + Postgresを構築する時にやった設定メモ

忘れるし. vagrantで構築する時の. ユーザはvagrantで. provisioning.shとか作れって話だけど. ロケールがvagrantのboxにないのでlibcを入れなおす sudo yum reinstall -y glibc glibc-common ロケールとタイムゾーンの設定 sudo localectl set-locale LANG=…

Laravel6系でmigrationのchangeを使おうとしたらエラーが出た

こんなエラーが出た. Symfony\Component\Debug\Exception\FatalThrowableError : Class 'Doctrine\DBAL\Driver\PDOMySql\Driver' not found doctrine/dbalを入れれば良いという情報はたくさん見つかるのだが, Laravel6だとうまく動かなかった. どうもdoctrin…

Laravelでフォームのチェックボックスを作るときにoldを使いたい時

なんかいつも忘れるというかハマるんだよね. is_doneはDB上はbooleanとして. <input type="hidden" name="is_done" value="0"> <input type="checkbox" name="is_done" value="1" id="is_done" @if (old('is_done', $production_plan->is_done ? '1' : '0') === "1") checked @endif > <label for="is_done">完了 </label> テーブルみたいな明細構造でも同じ考え方で大丈夫.(当たり…

Laravelのリクエストバリデーションで除外IDを指定する

unique使うと更新時に問題になるんだけど, ignoreというメソッドがいつの間にか追加されている. これを使えば「更新対象レコードのidを除外してuniqueチェック」ができるけど, 更新対象レコードのidをフォームリクエスト内でどうやって取得するのかわからな…

Laravel(Eloquent)で実行するSQLを確認したい

O/Rマッパーは便利なんだけどパフォーマンスとか考えると生のSQLみたい事がよくある. というか生SQLの方がわかりやすいことも正直多い.... ということで生のSQLを出す方法を調べた. 1. toSqlを使う ちょっと見るにはシンプルでよい. $query = $User::where('…

Laravelのmigrationで複数列にユニークキーを指定する方法

毎回ググってる. ユニーク制約を追加する時. $table->unique(['列1', '列2'], '制約名'); ユニーク制約を削除する時. $table->dropUnique('制約名'); 制約追加時の制約名は任意指定のようだけど, 後で削除することを考えると指定しておいたほうがわかりやす…

Laravelのmigrationで外部キーを消すときの指定方法

なんかパッとわからなかったのでメモ. Laravel6では動いた. 多分5とかでも動く. $table->dropForeign('[外部キーを取り除くテーブル名]_[外部キーを取り除く列名]_foreign');

Laravel6でページネーションのテストする時に困った事

メモ書き. ハマった点は assertViewHasにはpaginate()の結果を渡してやる必要がある(これはまぁそうだよね) assertViewHasに渡すデータはwithでeagar loadingしたデータを渡す必要がある それっぽいコードを書くと、以下ではダメで // 検索結果が昇順でソー…

laravelでdusk使う時にやること

毎回忘れるから雑にメモ. HomesteadでなくCentOSの場合 chromeを入れてやる必要がある. vi /etc/yum.repos.d/google-chrome.repo [google-chrome] name=google-chrome baseurl=http://dl.google.com/linux/chrome/rpm/stable/$basearch enabled=1 gpgcheck=1…

Homestead上でlaravelのdusk使おうとしたらFailed to connect to localhost port 9515: Connection refusedって言われる

結論としてはchromeとchrome-driverに必要なライブラリが入っていなかったからっぽい. Homesteadって全部入りではないのか... っていうか以前のバージョンなら問題なく動いた気が...なぜなのだ... # 直接実行するとchrome-driverがそもそも動作しない $ ./ve…

Laravelで画像をリサイズする際のメモ

Laravel 5.7で試した. intervention/imageを使った. 他にも透かしを入れられたりと便利. 基本的に上記の公式を見るのがよい. 以下は怠けたいとき用. composerでパッケージのインストール $ composer require intervention/image laravelのconfigへ追記 confi…

Laravelでcomposer使うとやたらIt is unsafe to run Dusk in production.と言われる時の対処

なんか前も同じ事やった気がするのでメモっとく. composer installとかcomposer updateをすると以下のメッセージが出てくる. It is unsafe to run Dusk in production. 本番環境でDusk入れるなあぶねーぞだそうだ.うん.そうだね. 対処 composer.jsonに以下を…

Laravelでビューの独自ヘルパ関数が欲しいときにはどうすればいいのか

わからん. が, とりあえず調べてみると説得力あるのが以下だった. teratail の回答 要は「Laravel公式でもヘルパ関数が用意されているんだから, その実装方法を見習え」ということっぽい. 確かにLaravelには豊富なヘルパ関数がある. 単純に実装する この方法…

Laravelで複数フィールドを組み合わせてバリデーションした時のメモ

FormRequestを使ってバリデーションを書いていた時に, ややこしい条件でバリデーションをかけたくなった. 個別のフィールドに対して検証するのではなく, フィールド2つ以上を組み合わせて検証とか, DBの値を使ってとか. 単一のフィールドそれぞれの検証なら,…

Laravelのページネーションで次ページにパラメータを渡す

初心者なのでメモばかりになる. よくある一覧ページ(検索条件で絞って次々に見ていくやつ)を作っていた. 検索で次ページへ移動すると検索条件が引き継がれてなくて, ページネーションでパラメータが渡っていないことに気づいた. ページネーションは以下のよ…

Laravel困ったときメモ

Laravelでアプリを初めて作った時のメモがSimpleNoteに残ってたので記事にして保管しておく. わりと当たり前の事も書いてあるけど, まぁ, いいや. たぶん追記していくことになる. モデルとかコントローラーとか一括で作りたい 以下でmodelとcontrollerとmigr…

homesteadからHerokuへデプロイした時のメモ

参考サイトほぼまんまだけど, メモ. herokuアカウントを作る アクセスして作る. CLIツールを入れる homestead上で入れた. sudo snap install --classic heroku CLIツールでログインする vagrant@homestead:~/code$ heroku login heroku: Enter your login cr…

Laravelで見積管理システムを作った

雑だけど, 作った. github.com 最近, 新しいフレームワークや言語を触るときには簡単な業務システムを作るようにしている. (もちろん, 業務系で使える技術ならではあるが) 昔作ったやつは以下. VB.NET(Windows Forms)で見積管理システムを作った Rails5で簡…

Homesteadで別名のVMを作りたい

プロジェクトが複数同時に走るとか, よくある事なので. 普通はどうするんだ? 以下を見ると1つのVMを共有して使うようですね. Homesteadを使って複数のLaravelプロジェクトを作成する簡単な方法 ホスト名で切り分けると. VM分けたいんだけど... VM分けたいで…

Laravelでクエリビルダを使う

Laravel 5.7.4で試した. LaravelにはQuery Builderが備わっています. SQLインジェクション対策も施されていて, それなりに複雑なクエリも書けるので, O/RマッパーのEloquentだと複雑になりそうな時には便利っぽいです. 試すための事前準備 DBにはPostgreSQL…

Laravel bladeで長い文字列を丸める

Laravel Framework 5.7.4で確認. ググっても案外パッとは出てこなかったので書いておく. Railsのtruncateみたいなのが欲しかった. str_limitを使えば良いらしい. {{ str_limit($string, $limit = 150, $end = '...') }} Helperがいっぱいあるので一通り見て…

Laravel - Homestead環境でPostgreSQLを使う時のメモ

一応メモっとく. Homesteadで環境は作ってある前提 プロジェクトを作る&バージョン確認 codeというプロジェクトを作成. vagrant@homestead:~$ composer create-project --prefer-dist laravel/laravel code バージョンは5.7.4 vagrant@homestead:~/code$ php…

Laravel標準の機能で認証フォームを作る

Homestead上のLaravel 5.7.4で試した. Laravelには認証を実装するための機能が標準で付いてきています. 認証はどこでも必要になるので入門するには良いとっかかりということで, 利用してみました. 実装できる機能 標準でもこれだけ実装できます. ほとんどの…

Homestead環境をWSL(Ubuntu)上で用意した時のメモ

忘れそうなので, とりあえずざっとメモ. vagrantをWSL上に入れる 別記事にした. Homesteadのインストール WSL(ubuntu)で作業. $ git clone https://github.com/laravel/homestead.git $ bash init.sh # Homestead.yamlが生成される. 必要なら生成ファイルを…

HomesteadでWindows10上にLaravel開発環境を構築した時のメモ

先にざっくり概要 VirtualBoxを入れる Vagrantを入れる Git for Windowsを入れる HomesteadのVagrant boxをダウンロード Homesteadのgitリポジトリをclone init.batを起動 環境変数を設定 ssh-keygenで鍵を作成 Homestead.yamlを編集 vagrant upでVMを起動 v…