学習履歴一覧

551件中の 276-300件 を表示

[Laravel]画像を普通にアップロードするテストアプリケーションと、複数画像のアップロード+別モデルへの紐付けのテストアプリケーション作成

今日のYWT やったこと Laravelで画像のアップロード機能の実装 ddで変数の中身を確認 Laravelで複数画像のアップロード機能の実装 Laravel + DockerでLaravel5系の環境構築もうまくいかず、6で試す わかったこと デバッグの方法 dd Laravel 5.8 ヘルパ dd( ) dd($変数)で変数の内容を表示し、スクリプトの実行を停止する データが渡ってきてるかどうかなどに使えるやつ Tinker php artisan Tinkerでrails cみたいなのが使える たとえばItemテーブルのデータを全件取得したい時、App\Item::all();で取得可能 マイグレーションのやりなおし ミスったマイグレーションも、わざわざ新しいファイルを作って変更かける必要なく、php artisan migrate:freshでやり直せる redirectとviewの違い redirect ルーターを通る view 該当するディレクトリに保存されているファイルを呼び出してブラウザに表示する UploadedFileのstoreメソッド /* storeメソッド(サーバー上にアップロードしたファイルを保存するメソッド)でアップロード publicディスクのuploadsディレクトリに保存される 画像が保存されたディレクトリのパスを、変数$pathに入れている */ $path = $file->store('uploads', 'public'); /* [補足] ディスクというのは、「ファイル保存の定義」 ディスクにはデフォルトで3つの定義がある(local, public, s3) それぞれに、どのフォルダにどうやって保存するかってのが定義されている その定義は、config/filesystem.phpにある なにも指定しなければlocalが使われる */ 次やること 複数画像のアップロードのコードを読み解く Travelogに写真アップロード用のテーブルを作成し進める

PHP
Docker
Laravel

2020年10月11日(日)

8.8時間

[Laravel][Docker]環境構築ハンズオンをやる。それで作ったリポジトリをクローンし画像アップロードのサンプルアプリを作成(途中)

今日のYWT やったこと Dockerによる環境構築ハンズオン 【初心者向け】20分でLaravel開発環境を爆速構築するDockerハンズオン このチュートリアルをこなし、Laravel6系のLaradock環境をGitHubにデプロイ Laravelで画像アップロード機能のチュートリアル [Laravel6]画像アップロード方法を懇切丁寧に解説します 上のDockerハンズオンで作ったリポジトリをクローンし、環境構築 mysqlの設定だけ書き換える必要がある Laravel Collectiveのインストール Laravel Collective(Formファサード まとめ) docker-compose exec app composer require "laravelcollective/html":"6.*" Formファサードが使えるようになる カラムの追加 file_pathという名前のカラムを追加した docker-compose exec app php artisan make:migrate add_file_path_to_users_table --table=users Add: file_pathカラム追加のマイグレーションファイル ただしこのファイルではカラム名のスペルミスをしている 上で作ったDockerのリポジトリに間違えてpushしてしまったため、git resetでローカルから変更を取り消し、履歴をpushしなおした git push の取り消し方法 indexとcreateにviewを返すための追記 return view('users.create')でviewを返してあげないと、viewファイルを表示してくれない doesn't have a default valueというエラーへの対処 databaseの設定ファイルを書き換える strict = false カラムをnullableに変更 フォーム送信ボタンを押すと値がnullだよと怒られた 以下のように記述しnullableに public function up() { Schema::table('users', function (Blueprint $table) { $table->string('email')->nullable()->change(); $table->string('password')->nullable()->change(); }); } public function down() { Schema::table('users', function (Blueprint $table) { $table->string('email')->nullable(false)->change(); $table->string('password')->nullable(false)->change(); }); } change_columnするにはdoctrine/dbalというライブラリが必要と言われたので導入した わかったこと Dockerの便利さ 一度環境構築してしまえばあとはgit cloneしてくれば手元にlaravel環境ができる素晴らしさ ブランチ切って、laravelのバージョンやデータベースを変えることでやりたい放題かもしれない pushしたあと、その履歴を消す方法 git reset --hard 該当するコミットのハッシュ git revert 該当するコミットのハッシュ この2つがある。 最初は下のgit revertでやろうと思ったが、git revert HEAD~3で頭から4つ分のコミットを打ち消すと書いてあったがうまくいかなかったのでgit resetした。 git resetすると該当コミット部分までの変更がローカルでもなかったことにされるので注意。 カラムの変更にはライブラリが必要 doctrine/dbal User::All();を使うにはモデルを作成する必要がある モデルには以下の様な記述だけでもよい <?php namespace App; use Illuminate\Database\Eloquent\Model; こうすることで、コントローラでUser::All();が使える viewファイルへのデータの渡し方 コントローラにて、下記のように第二引数に記述する <?php namespace App\Http\Controllers; use App\User; # 追加 use Illuminate\Http\Request; class UsersController extends Controller { public function index() { $users = User::all(); # 追加 return view('users.index', ['users' => $users]); # ['users' => $users]を追記 } } 未解決点 コントローラに記述した\App\Userとは何か? public function store(Request $request) { $request->validate([ 'name'=>['required','string','max:255'], 'file_path'=>['file','mimes:jpeg,png,jpg,bmb','max:2048'], ]); $path = ''; if($file = $request->file_path){ $path = $file->store('uploads'); } \App\User::create([ 'name'=>$request->input('name'), 'file_path'=> $path, ]); } なぜpublic/uploadsフォルダに画像が保存されないのか? なぜUserにnameだけ入って画像のパスが入ってくれないのか? 次やること 画像アップロードの実装を終わらせる

PHP
Docker
Laravel

2020年10月10日(土)

8.6時間

Laravel x CircleCI x AWSで学ぶCI/CD

今日のYWT やったこと Laravel x CircleCI x AWSで学ぶCI/CD 2章までざっと読む わかったこと CI(Continuous Integration) 継続的インテグレーション すべての開発者の作業コピーを定期的に共有されたメインラインにmergeすること メリット インテグレーションバグは早期に発見され、小さな変更セットのため追跡が容易になる。これにより、プロジェクトのライフサイクルにわたって時間とコストの両方を節約することができる リリース日の土壇場の混乱を避けることができる 単体テストが失敗した場合やバグが発生した場合、開発者がデバッグせずにコードベースをバグのない状態に戻す必要がある場合、少数の変更しか失われない(統合は頻繁に発生するため) テスト、デモ、リリースの目的で「現在の」ビルドを常に利用可能にする 頻繁にコードをチェックインすることで、開発者はモジュール化された複雑さの少ないコードを作成するようになる コードをこまめにpushし、それを自動テストにかけ、通ったものがその都度自動デプロイされるイメージ? それにより、上記のようなメリットが得られるとのこと。 次やること この教材のざっと読み+ちょっと試してみる(サンプルアプリケーションとしていままでやってきた教材と同じアプリが使われているようなので)

PHP
Laravel
Circle CI
AWS

2020年10月01日(木)

1.1時間

[Laravel]Laravel(+Vue.js)でSNS風Webサービスを作ろう!5章終了

今日のYWT やったこと Laravel(+Vue.js)でSNS風Webサービスを作ろう 5章 記事更新・削除・詳細表示を作ろう ポリシーの登録 authミドルウェアを外す cardを使って記事を表示し、それをindexにも使う ポリシーについて調べる わかったこと Laravel Policy 今回は、ログインしているユーザーのIDと記事のユーザーIDが一致した場合にだけdeleteアクションとupdateアクションを許可し、indexとshowはログインしていなくても可能にするよう編集した。 そのような挙動を実現するためにPolicyを編集したので、これはRailsでいうコントローラに記述するbefore_action :authenticate_user!のようなものかと推測した。 しかし、日本語ドキュメントには ゲートとポリシーは、ルートとコントローラのようなものであると考えてください。ゲートはシンプルな、クロージャベースのアプローチを認可に対してとっています。一方のコントローラに似ているポリシーとは、特定のモデルやリソースに対するロジックをまとめたものです。最初にゲートを説明し、次にポリシーを確認しましょう。 それに対し、ポリシーは特定のモデルやリソースに対するアクションを認可したい場合に、使用する必要があります。 とある。モデルに対するアクションの認可……これがコントローラのアクションに対する認可とどう違うのか?がいまいちよくわかっていない 次やること MVCモデルの復習

PHP
Laravel

2020年09月15日(火)

2.6時間

551件中の 276-300件 を表示