エンジニアのひよこ_level10

【毎日更新!】新卒2年目エンジニアブログです! プログラムだけじゃなく、マネジメントとかも書いていきたい!

Laravel

mysql8以降使って、Laravelのmigrateができない問題【337日目】

環境作ったらmigrateができなかった PHP+MySQLで環境作成したら、動かない。 マイグレーションしようとすると、PDOのエラーが出る。 デフォルトのパスワード認証のやり方が変わって、 caching_sha2_passwordって設定だから、接続できないよーって。 なので、…

【Laravel】Eloquentのcreateとfillの違いとは【336日目】

■注意 コードは5.2のコードです。ですが、そんなにバージョン上がっても変わってないはずです。 ■結論 基本的にcreateで大丈夫 ■違い 1.createはどうせfill通るので、fillableやguardedの部分は両方使う 2.createは、静的メソッドで、以下までしてくれる 1. …

【コントリビュート】Laravelへのプルリク、その後に起きたこと【330日目】

これまでの流れ ■バグ発見 【Laravel5.6】cacheヘルパ関数で、テストのshouldReceiveが動かない対応【327日目】 - エンジニアのひよこ_level10 ■こんなふうにプルリク作って githubの他の人のコードにプルリクを出すときの流れ【328日目】 - エンジニアのひ…

Laravel公式のcacheヘルパ関数に対して、プルリク出してみた【329日目】

プルリク出したので 経緯とかまとめてみる。こんなことあったよー褒めてーくらいの記事です。 ただ、教訓となったのは、 『『『自動テストってまじで大切!!!』』』 問題となった内容 willow710kut.hatenablog.com cacheのhelper関数おかしくないかな?っ…

【Laravel5.6】cacheヘルパ関数で、テストのshouldReceiveが動かない対応【327日目】

結論 cache('key')を使った場合、withの中身を with('key', null)にする。 サンプルコード public function testBasicExample() { Cache::shouldReceive('get') ->with('key', null) ->andReturn('value'); $this->visit('/cache') ->see('value'); } 公式ド…

【Laravel】bladeで@ifを使わずisset【323日目】

こんな時 コントローラー側で変数を渡す時、この変数がない可能性がある・・・ あるいは、バリデーションで $errors変数を受け取る可能性がある時。 こうする @isset($errors) bladeに @if(isset($errors))って書かなくても、bladeでこの書き方があります。

【Laravel】download関数のpathToFileの落とし穴【321日目】

ユーザーにファイルをダウンロードさせたい http://domain_name.com/storage/images/upfile.jpegで画像が出るものをダウンロードさせたい。 return response()->download('/storage/images/upfile.jpeg'); あれ?なぜか動かない。 最初のスラッシュは不要 re…

【Laravel】Cookieを付与する。view関数でbladeも使えます【320日目】

こんな時 LaravelでCookieを付与したい。 (この保存方法だけでは、暗号化された状態で保存されます。なので、ユーザーは内容がわからないです。) 書き方 return response() ->view('blade_file_name') ->cookie('cookie_name', 'value', 30); 何をしてるの b…

【リクエスト】LaravelのRequestクラスで使う基礎メソッドメモ2【312日目】

前回の記事 willow710kut.hatenablog.com 使ったページ やったこと Postで、messageにteatをつけて送った all() 結果 _token=>p899Z1NqmQpIQW1KTeG06EPXCMVz19oGdn4myVv6 message=>teat _tokenは、LaravelでPostを送るときに必要な {{ csrf_field() }}で生成…

【リクエスト】LaravelのRequestクラスで使う基礎メソッドメモ1【311日目】

こんなときに使うRequest フォームがあって、入力して、ボタンを押してpostリクエストを送る。 このリクエストの中身を使ってどうこうするときの関数。 サンプルページを作って、流れも合わせて説明。 リクエスト元ページ http://localhost:8000/request と…

【Laravel】各ページ同じヘッダーを使い回すbladeの構成【309日目】

こんな時 ページのヘッダーはどのページでも同じものを使うことよくありますよね。 こんな時、毎回コピペするのは面倒。 そんな時はこんな構成にしましょう。 使い回すテンプレート web/study-laravel/resources/views/_layouts/default.blade.php <html lang="ja"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> </meta></meta></head></html>

【nginx+phpfpm】Laravelでpublic配下のファイルが取得出来ない【306日目】

こんなことがありました。 docker-composeで管理、nginx+php-fpmで環境構築しました! Laravelのチュートリアルページ表示されました! ・・・favicon.icoが反映されない? public/app.cssや、public/app.jsが読み込めない・・・ 起こってること phpは、ngin…

【Laravel】Laravelのプロジェクトをcloneしたけど動かない時【300日目】

こんなことありませんか 新しくLaravelのプロジェクトをgit cloneしてきたよ! えっと、localhost:8000に行けばいいんですね! ・・・あれ?動かないんですが。 エラー例 whoops looks like something went wrong. Warning: require(xxxx/vendor/autoload.ph…

【Laravel】バリデーションでエラーが出た時に、ページにエラーを出したい【293日目】

こんな時 Laravelのバリデーションを作る。 その時のエラーに応じて処理をしたい Request側 省略。 Controller側 public function index(XxxRequest $request) { xxxxxx } 該当のバリデーションをかけたリクエストを用意する。 View側 @if (count($errors) >…

【Laravel】URLが『/hoge』のように、.phpが要らない理由【291日目】

普通のページなら phpの普通のページだと、URLは https://domain.jp/hoge/huga.php のように、phpをつける必要がありました。 では、なぜLaravelはそれが必要ないのでしょう。 必ずindex.phpを開いてるから これはURLがなにであろうと、ドキュメントルートの…

【Laravel】dd関数は実際何をしてる?+名前の意味とは【260日目】

ddとは よくLaravelで、プログラムが正しく動いているか試すために、 dd($some_value); というコードを書いて、$some_valueの値をチェックしたりします。 じゃあ、この関数は何をしているのでしょう? そもそもこの名前は何の略? コード vendor/laravel/fra…

【Laravel】コレクションの値を$model->value = xxで変形させるミューテター【255日目】

参考 Eloquent:ミューテター 5.1 Laravel 書き方 class User extends Model { /** * ユーザーのファーストネームを取得 * * @param string $value * @return string */ public function setFirstNameAttribute($value) { $this->attributes['first_name'] =…

【Laravel】Bladeに書く{{}}って何してるの?【244日目】

{{}}ってなんだろう? よく、Bladeを書くときに、 {{ $user->name }} みたいな書き方をすると思います。 データを取得して出力するのはわかりますが、具体的に何をしてるのでしょう? echoとe関数を呼ぶ 上のコードですが、Laravelを通して変換すると、次の…

【Laravel】ファサードはなんなのかをざっくりメモ書き【236日目】

注意 私のざっくり理解のメモ書きです。 ファサード Laravelのコード全体に、便利なインスタンス用意してくれてるやつ。 起動時にインスタンス用意してくれるやつ。 View::XXX(); こんな感じに、インスタンス化もパス指定もしてないのに使えた関数あったよね…

Laravelでテーブル名でModelを作る理由を考える【231日目】

あくまで考察 あくまで考察。予想です。 私はこれでいいと思った $user = new Model('Users'); こんな感じにテーブル名指定すればいいんじゃね?って。 User.phpを作るにしても、その時点でユーザーはDB意識してるじゃんって。 DB意識させない 最初にUser.ph…

【Laravel】bladeでforeachの回数カウント3種類($loop使えない用)【228日目】

こんなとき使う @foreach($titles as $title) @if($index == 4) @endif @endforeach こんなふうに、4番目のデータのときにだけなにかをしたい場合。 書き方いくつかあります。 $loop変数を使う(Laravel5.3以上) @foreach ($titles as $title) @if ($loop->in…

【Laravel】POSTで送ったRequestを配列で処理したい【213日目】

こんな時に使う フォームでCheckBoxなどのデータをPOSTで受け取る。 Laravel側でRequestを受け取る。 その受け取ったデータをこんなふうに取得したい。 [ 'username' => 'uiro', 'item_number => '5' ] こうかく function doPost(Request $request) { $reque…

【Laravel】url()->previous()で前のページが取得出来ない時の対応【208日目】

直前に見ていたページの取得方法はこちら willow710kut.hatenablog.com こんな時につかう 対象のページを初めて見た時 新しいページ、新しいタブで開いた時 この時は、直前に見ていたページが取得出来ない。 その時の対応をどうするか。 別なページをセット…

【Laravel】実行したor実行する前のSQL文を確認する【205日目】

こんな時に使う Laravelで書いたSQLの文を確認したい。 $articles = Article::all(); これとか実際にはどんなSQL文で取得したか知りたい 実行後に確認 // これから書くSQL文をLogで取得出来るようにする \DB::enableQueryLog(); // SQL文実行 $articles = Ar…

【Laravel】モデルが更新した時に、関数を動かす【193日目】

こんなとき使える ユーザー情報を更新する時に、イベントを発行する。 User::updated(function($user) { if ($user->isDirty('email')) { Mail::to($user)->send(new UserMailChanged($user)); } }); これで、ユーザー情報を変更して(updatedイベント)、 …

【Laravel】直前にアクセスしたページのURLを取得する【188日目】

引数を入れた時どうなるかも書きました 取得失敗した時の動作が書かれているよ。 willow710kut.hatenablog.com 直前にアクセスしたURL、ページに来るためのリクエスト元のURL こうかく url()->previous(); 結果 "http://blog.hatena.ne.jp/willow710kut" み…

【Laravel】パスワード入力時に、確認の入力をバリデーションする。【185日目】

こんな時に使う よく新規会員登録とかで見かける、 パスワード入力 パスワードの確認 とかで、同じパスワード入れないと通らないあれ。 こう書く id='xxx'のバリデーションに、 confirmedを設定 id='xxx__confirmation'を、確認用のformとして用意する id='x…

【Laravel】データベースから取り出したデータを、型変換してから取り出したい【183日目】

値を取り出す時に、事前キャストしたい ユーザーが管理者のときに○○したいという時に、以下のようにコードを書きたい $user = new User('uiro'); if($user->is_admin === true) { .... } でも、データベースから取得した$userは0,1で is_adminが入ってる・・…

【Laravel】コレクション内の多重配列を合体させて、一次配列に【182日目】

こんな時に使える コレクション内に、[1,2,3]、[4,5,6]とかの配列を、一個にくっつけたい。 普段なら、foreachで取り出して、一個一個結合させる必要がある。 使うもの collapse() コード $collection = collect([[1, 2, 3], [4, 5, 6], [7, 8, 9]]); $colla…

【Laravel】Formファサードのpasswordのoptionがきかないのは【181日目】

Formファサード Form::text('email', null, ['id' => 'email', 'class' => 'mail', 'tabindex' => 1]) こんなやつ これだと上手く動かない Form::password('password', null, ['id' => 'password', 'class' => 'pass', 'tabindex' => 1]) この時、formタグに…