不惑にしてまだ何者でもない者のブログ

Arduino関連、Raspberry Pi関連、プログラミング学習

paizaラーニング『Django入門編1: Djangoの基本を理解しよう (全10回)』を受講してみた

2021-02-28 16:40:44 | paiza

『Django入門編1: Djangoの基本を理解しよう (全10回)』


Python系のレッスンを終わらせるつもりだったが、
Flask入門編を終了した時点で、データベースやSQL系の知識の必要性を感じたから、
先に、SQLやPHP+Laravelの方を先に終わらせることとなった。

今回ようやく『Webアプリ開発入門 Django編 (全5レッスン)』に取り掛かることができる😋 

事前準備としては、Djangoのインストールくらいかな?
pip install Django

anacondaで以前Django-envという環境も作っているけど、
paiza用の環境にも入れておこう。

メモ

#01:Djangoとは

  • Djangoとは:PythonによるWebアプリケーションフレームワーク
    • Webアプリケーションフレームワークというのは、Webアプリを開発するために便利な部品やツールをひとまとめにしたもので、実践的なWeb開発では、このようなフレームワークを使うことで、効率よく開発を進めていくことができる。
  • Djangoの特徴
    - 高速開発
    - 多数の便利な機能を装備
    - テンプレートエンジン
    - データベース(O/Rマッパー)
    - 管理画面
    - ユーザー認証
PHPのLaravelと同じような感じだな〜😯 

#02:Djangoで最初のプロジェクトを作ろう

  • Djangoのバージョンを確認する。
    $ python -m django --version
  • myappプロジェクトを作成する。
    $ django-admin startproject myapp
※ ↑これを実行すると、↓なんかエラー?メッセージ出た!?😣 

You have 18 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.

このままでも、Webサーバーにアクセスできるみたいだけど、
ちゃんと動いてないよ、って言われてるみたい。😞 
どうやら'python manage.py migrate'を実行せよ、ってことらしいので、
それをやってから再度サーバーを起動すると上記のエラーメッセージは
とりあえず出なくなった。

それ以外で特に違いは分からないけど。

#03:DjangoでHelloWorld

  • Djangoのアプリケーションを作成する
    $ python manage.py startapp bbs
  • views.pyを修正
    myapp/bbs/views.pyの編集
  • プロジェクト全体のルーティングを設定
    myapp/myapp/urls.pyの編集
  • bbsアプリのルーティングを設定
    myapp/bbs/urls.pyの新規作成
  • bbsアプリをプロジェクトに登録
    myapp/myapp/settings.pyの編集

#04:Djangoにテンプレートを追加しよう

  • views.pyからテンプレートを呼び出す
    myapp/bbs/views.pyの編集
  • テンプレートファイルを作成する
    myapp/bbs/templates/bbs/index.htmlの新規作成

#05:テンプレートにデータを渡そう

  • views.pyからテンプレートにデータを渡す
    myapp/bbs/views.pyの編集
    • contextという辞書データを作成すして、renderの第3引数として渡す)
  • テンプレート側でデータを受け取って表示する
    myapp/bbs/templates/bbs/index.htmlの編集
    • contextのキーを指定して{{ }}で囲む。

#06:Djangoのモデルを作ろう

  • Djangoからデータベースを操作する、モデルについて学習する。
    → モデルを使うと、Pythonのオブジェクトとして、データベースのレコードを操作できるようになる。
  • モデルとは
    • モデルは、データベースのレコードを Pythonのオブジェクトに割り当てる機能。
    • 通常、データベースを操作するにはSQLを使う。SQLは、データベースの操作で標準となる重要な技術だが、Pythonとは文法や考え方も異なる。
    • モデルは、データベースのレコードをオブジェクトに割り当てる。モデルを使えば、SQL(エスキューエル)を書かなくても、Pythonのコードでデータベースのレコードをオブジェクトとして操作できる。
      → このようにオブジェクトでデータベースを操作するツールを「ORマッパー」(Object-relational mapper)と呼ぶ。
  • phpMyAdminで空のデータベースを作成
  • settings.pyで、データベース設定
    myapp/myapp/settings.pyの編集
  • models.pyを作成
    myapp/bbs/models.pyの編集
  • マイグレーションとは
    • マイグレーションとは、データベースの中身を一括して移行したり変更する作業のこと。Djangoのマイグレーション機能を利用すると、データベースの変更を一度に行うことができる。また、変更内容を元に戻したい場合も、コマンド一つで実現できる。
    • Djangoのマイグレーションは、2段階で行う。まず専用のコマンドを使ってマイグレーションファイルを作成する。それからマイグレーションを実行する。
    • Djangoでは、モデルを作成しておくと、マイグレーションコマンドでMySQLのテーブルを作成することができる。
  • マイグレーションファイルを作成する
    $ python manage.py makemigrations bbs
※ ↑これを実行するには、mysqlclientをインストールする必要があるみたい。
ただ、いきなりpip install mysqlclientするとエラーとなるので、
開発ツールを先にインストールしないといけないらしい。
以下のサイトが参考になった。

mysql-serverはインストール済みだから、
libmysqlclient-devをインストールすることで、
pip install mysqlclientでちゃんとインストールすることができた。

  • マイグレーションを実行する
    $ python manage.py migrate

#07:Djangoの管理サイトを使ってみよう

  • 管理ユーザーをコマンドで登録する
    $ python manage.py createsuperuser
  • 管理サイトに、作成したArticleモデルを追加する
    myapp/bbs/admin.pyの編集

#08:モデルのデータを一覧表示しよう

  • ビューで、モデルのデータを取り出す
    myapp/bbs/views.pyの編集
  • テンプレートで、モデルのデータを一覧表示する
    myapp/bbs/templates/bbs/index.htmlの編集

#09:データの詳細を表示しよう - その1

  • 掲示板アプリのルーティング
ルートコード表示するページ
(ドメイン名)/bbs/index()一覧表示
(ドメイン名)/bbs/<id>detail()個別表示
(ドメイン名)/admin/admin.site.urls管理サイト
  • urls.pyに/detailを追加する
    myapp/bbs/urls.py
  • views.pyを修正する
    myapp/bbs/views.py

#10:データの詳細を表示しよう - その2

  • views.pyに、detail関数を追加
    myapp/bbs/views.py
  • detail.htmlを追加する
    myapp/bbs/templates/bbs/detail.html
  • 一覧表示から詳細表示にリンク
    myapp/bbs/templates/bbs/index.html

認定証

このレッスンでは、チャプター8を終えた時点で、認定証の授与と学習ステータスのランクアップがあった。


学習ステータス



コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

paizaラーニング『Laravel入門編5: Laravelでユーザー管理しよう (全9回)』を受講してみた

2021-02-24 23:01:59 | paiza

『Laravel入門編5: Laravelでユーザー管理しよう (全9回)』


これでLaravel入門編も最後のレッスンだな
内容も結構難しかったけど、
処理が重いせいか何度もPCがフリーズしたり、
ジャッジに時間がかかり過ぎてタイムアウトしたり、
となんか色々大変だったな😩 

メモ

#01:ユーザー管理機能を理解しよう

#02:ユーザー管理機能を追加しよう

  • 新規のアプリケーションディレクトリを追加する
    $ laravel new test_auth
  • ユーザー管理用のファイル
    • app/Models/User.php
    • database/migrations/20xx_xx_xx_000000_create_users_table.php
    • database/migrations/20xx_xx_xx_000000_create_password_resets_table.php
  • ユーザー管理機能を自動生成
    $ php artisan make:auth
    • これで、ユーザー管理用のルートとビューを追加する。
※ ってあるけど、Laravel6.x以降 php artisann make:auth コマンドは無くなったらしい(Web上の環境は、Laravel5系が使われている)。
そこで、以下のサイトを参考に、必要なライブラリをインストールして、異なるコマンドを実行する必要がある。


#laravel8の場合
composer require laravel/ui
php artisan ui vue --auth
  • 登録されているルートを確認するには、次のコマンドを実行する。
    php artisan route:list

#03:ユーザー管理用のテーブルを用意しよう

  • ユーザー管理用データベースを作成する:myauth
  • データベース設定 :.envファイルの編集
  • マイグレート
    $ php artisan migrate
※ ここでの作業による変更は、gitに認識されなかった。

#04:ログインフォームの動作確認をしよう

  • ユーザー登録やログイン画面を実際に操作して、どのような機能ができたのか把握する。

#05:ログイン機能を追加しよう

Lunchmapアプリにユーザー管理機能を組み込んでいく。
まずは、ユーザー管理用のルートとビューを追加して、ユーザー登録とログイン機能を有効にする。
  • ユーザー管理用のルートとビューを追加
    • Laravel5系の場合
      $ php artisan make:auth
    • Laravel6以降の場合
      composer require laravel/ui
      php artisan ui vue --auth
  • 共通テンプレートに、ログイン用のコードを追加する
    • resources/views/layout.blade.phpのheadタグの編集
    • resources/views/auth/app.blade.phpのナビゲーションバーにあるログイン用リンクのボタンのコードを、resources/views/layout.blade.phpのナビゲーションバー部分にコピーする。
  • csrf_token()とは?
    これはCross Site Request Forgery(リクエスト強要)と呼ばれる攻撃手法に対策するもの。CSRFはWebアプリケーションへのリクエストを記述した命令を不本意に実行させて、その人の権限でリクエストを実行させるという攻撃のこと。
※ 自分の環境の場合、登録したユーザーでログインはできるが、ログアウトができない。そもそもログアウトボタンが表示されない。

#06:アクセス制御を追加しよう

ログインしている時だけ、お店情報を投稿・更新・削除できるようにする。
  • ログインしていない時、実行しないメソッドを指定する
    app/Http/Controllers/ShopController.phpの編集
    • public function __construct()
  • お店一覧のリンクを制御
    resources/views/index.blade.php

#07:お店情報にユーザー情報を追加しよう

  • カラムを追加するためのマイグレーションファイルを生成
    $ php artisan make:migration add_user_id_to_shops_table --table=shops
  • マイグレーションファイルに、user_idカラムを追加
    database/migrations/20xx_xx_xx_xxxxxx_add_user_id_to_shops_table
    • upメソッド
      $table->integer('user_id');
  • マイグレート
    $ php artisan migrate
  • usersテーブルにuser_idを登録
    • idが1のレコードに、user_id=1
    • idが2以上のレコードに、user_id=2
      (SQL)
      UPDATE shops
       SET user_id=2
          WHERE id>=2;
  • Shopモデルに、Userへのリレーションを追加
    app/Models/Shop.phpの編集
    • public function user()の作成
  • お店一覧に、ユーザー名を追加する
    resources/views/index.blade.phpの編集

#08:自分で投稿したお店情報のみ、更新・削除できるようにしよう

  • 新規投稿時に、user_idカラムを保存する
    app/Http/Controllers/ShopController.phpの編集
    • public function store(Request $request)の編集
  • showメソッドで、ログインユーザー情報を取得してビューに渡す
    app/Http/Controllers/ShopController.phpの編集
    • public function show($id)の編集
  • ログインユーザーの記事だったら、リンクを表示
    resources/views/show.blade.phpの編集
  • アクセス制御について

#09:セッションとパスワードを理解しよう

  • セッションとは
    ログインしてから、ログアウトするまでの一連のアクセスを「セッション」と呼ぶ。
  • セッションを確認する手順
    • Google Chromeの場合
      1.「設定」メニューを呼び出す
      2.「詳細設定」-「コンテンツの設定」-「Coookies」-「すべてのクッキーとサイトデータ」
      3.Webアプリケーションのドメイン名を検索する
  • パスワードの暗号化について
    Laravelでは、パスワードを「ハッシュ」という暗号に変換して保存している。 

認定証

このレッスンは、チャプター8終了時点で認定証がもらえた。


どうやらこのレッスン終了で、レッスン完了数がちょうど100になったみたい。
残りは51レッスンだけど、契約満了の3月末までにすべて終われるだろうか?

学習ステータス



コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

paizaラーニング『Laravel入門編4: 実用的なLaravelアプリを作ろう (全13回)』を受講してみた

2021-02-23 13:29:51 | paiza

『Laravel入門編4: 実用的なLaravelアプリを作ろう (全13回)』


そうだ!前回の途中からGitを使って管理するようにしたんだった。
今回もGitを使う予定だったのに、チャプター3からの利用になってしまった。

どうやら最初のコミットは空で作るといいらしい。

# リポジトリ作成
git init
# 最初のコミット
git commit --allow-empty -m "first commit"


メモ

#01:アプリの概要を整理しよう

  • オススメのお店を投稿できる「ランチマップ」アプリの機能を整理する。
  • 画面構成
    • 一覧画面:index.blade.php
    • 詳細画面:show.blade.php
    • 新規画面:new.blade.php
    • 更新画面:edit.blade.php
  • ルーティング
URL
HTTP
メソッド
呼び出す機能
コントローラ
メソッド
/shops
GET
一覧表示
index()
/shop/{id}
GET
詳細表示
show()
/shop/new
GET
新規作成
create()
/shop
POST
保存
store()
/shop/edit/{id}
GET
編集
edit()
/shop/update/{id}
POST
更新
update()
/shop/{id>
DELETE
削除
destoy()
  • 作業手順

    • アプリケーションディレクトリを準備する

    • モデルとコントローラを用意する

    • お店とカテゴリのテーブルを関連付ける

    • 共通テンプレートにBootstrapを導入する

    • 詳細ページを作る

    • 新規投稿フォームを作る

    • 投稿内容を保存する

    • 編集フォームを作る

    • 編集内容を更新する

    • お店情報を削除する

    • Googleマップを表示する

#02:アプリケーションディレクトリを用意しよう

  • アプリケーション用ディレクトリを自動生成する
    $ laravel new lunchmap
  • データベースを用意して、.envファイルを編集する。

#03:モデルとコントローラを用意しよう

  • モデルファイルを作成
    $ php artisan make:model Category -m
    $ php artisan make:model Shop -m -c -r
  • カテゴリーのマイグレーションファイルにカラムを追加
    database/migrations/20xx_xx_xx_xxxxxxxx_create_categories_table.phpの編集
    • $table->string('name');を
  • Shopsマイグレーションファイルにカラムを追加
    database/migrations/20xx_xx_xx_xxxxxxxx_create_shops_table.php
    • $table->string('name');
      $table->string('address');
      $table->integer('category_id');
  • マイグレーション実行
    $ php artisan migrate

#04:お店とカテゴリのテーブルを関連付けよう

  • Shopモデルにリレーションを設定
    app/Models/Shop.phpの編集
  • phpmyadminでサンプルデータを投入
    • categoriesテーブル
      INSERT INTO categories(name)
      VALUES
       ('イタリアン'),
       ('中華'),
       ('和食');
    • shopsテーブル
      INSERT INTO shops(name,address,category_id)
      VALUES
       ('パイザ亭', '東京都港区南青山3丁目', 1),
       ('ラーメンLaravel', '東京都港区東青山', 2),
       ('そばの霧島', '東京都港区西青山', 3);

#05:お店の一覧ページを作ろう

  • お店一覧のルーティングを定義する
    routes/web.phpの編集
    • Route::get('/shops', 'ShopController@index')->name('shop.list');
  • コントローラにお店一覧を記述する
    app/Http/Controllers/ShopController.phpの編集
  • お店一覧のビューを作成する
    resources/views/index.blade.phpを新規作成

#06:共通テンプレートにBootstrapを導入しよう

  • layout.blade.phpを分離する
    resources/views/layout.blade.phpの新規作成
    • <body>
       @yield('content')
      </body>
  • index.blade.phpに、セクションを追加
    resources/views/index.blade.phpの編集
    • @extends('layout')
      @section('content')
       (処理内容)
      @endsection
  • 共通テンプレートにBootstrapを割り当てる
    resources/views/layout.blade.phpの編集

#07:お店の詳細ページを作ろう

  • ルーティングを設定する
    routes/web.phpの編集
    • Route::get('/shop/{id}', 'ShopController@show')->name('shop.detail');
  • コントローラを記述する
    app/Http/Controllers/ShopController.phpの編集
    • public function show($id)
  • ビューを追加する
    resources/views/show.blade.phpの新規作成
  • お店一覧をテーブルタグにして、リンクを追加
    esources/views/index.blade.phpの編集

#08:新規投稿フォームを作ろう

※ Laravelでフォームを使用するときは、「laravelcollective/html」というライブラリのインストールを忘れずに。
$ composer require "laravelcollective/html"
  • ルーティングを設定する
    routes/web.phpの編集
    • Route::get('/shop/new', 'ShopController@create')->name('shop.new');
      Route::post('/shop', 'ShopController@store')->name('shop.store');
  • コントローラのcreate()を記述する
    app/Http/Controllers/ShopController.phpの編集
  • 新規投稿フォームのビューを追加する
    resources/views/new.blade.phpの新規作成

#09:投稿フォームの内容を保存しよう

  • コントローラのstore()を記述する
    app/Http/Controllers/ShopController.phpの編集
    • public function store(Request $request)
  • 一覧ページから新規投稿フォームにリンクする
    resources/views/index.blade.phpの編集

#10:お店の編集フォームを作ろう

  • ルーティングを設定する
    routes/web.phpの編集
    • Route::get('/shop/edit/{id}', 'ShopController@edit')->name('shop.edit');
      Route::post('/shop/update/{id}', 'ShopController@update')->name('shop.update');
  • コントローラのedit()を追記
    app/Http/Controllers/ShopController.phpの編集
    • public function edit($id)
  • editビューを作成する
    resources/views/edit.blade.phpの新規作成

#11:編集内容を更新しよう

  • コントローラのupdate()を追記
    app/Http/Controllers/ShopController.phpの編集
    • public function update(Request $request, $id, Shop $shop)
  • 詳細ページからリンク
    resources/views/show.blade.phpの編集

#12:お店の情報を削除しよう 

  • ルーティングを設定する
    routes/web.phpの編集
    • Route::delete('/shop/{id}', 'ShopController@destroy')->name('shop.destroy');
  • コントローラにdestroyメソッドを追記
    app/Http/Controllers/ShopController.phpの編集
    • public function destroy($id)
  • 詳細ページに削除ボタンを追加
    resources/views/show.blade.phpの編集

#13:Googleマップを表示しよう

  • 住所に合わせた地図をLunchmapアプリに表示するため、詳細ページにGoogleマップを組み込む。
    → Google Maps APIを使用する。
  • Google Maps API
  • APIとは
    APIとは、Application Programming Interfaceの略で、プログラムから別のプログラムの機能を呼び出すために用意された命令や関数のこと。
  • APIキーの取得手順
    • 1. Google Developers Consoleにアクセスする

      Google Developers Console
      https://console.developers.google.com/
    • 2. プロジェクトを作成を選択
    • 3. Google APIが表示されたら、Google Maps APIから「Google Maps Embed API」を選択
    • 4. 「有効にする」をクリック
    • 5. 「認証情報を作成」をクリックして、「必要な認証情報」ボタンをクリック
    • 6. 表示されたAPIキーを記録する

      ※特定のWebサービスだけから利用できるよう、「API利用制限」を設定することをオススメします。
      ※この手順や利用範囲はGoogle側で変更される場合があります。
  • 詳細ページのビューにマップを追加
    resources/views/show.blade.phpの編集
    • <iframe id="'map'<br"> src='https://www.google.com/maps/embed/v1/place?key=[APIキー]={{ $shop->address }}'
       width='100%'
       height='320'
       frameborder='0'>
      </iframe>

認定証

「ジャッジに時間がかかっています」ってヤツで何度落ちたことかっ!?😖 
どっち側の問題なんだ?😵
サーバー側なのか、こちらのPCやネットワーク側の問題なのか?

まぁ内容的には結構面白かったけど😜 
Google Mapの表示とか。

なんだかんだで、チャプター12終了時点で認定証を取得。


学習ステータス


おぉ〜!なんか確かに華麗な気がするっ!?😁 
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

paizaラーニング『Laravel入門編3: Laravelのビューとフォームを理解しよう (全11回)』を受講してみた

2021-02-22 22:06:13 | paiza

『Laravel入門編3: Laravelのビューとフォームを理解しよう (全11回)』


メモ

#01:投稿フォームを作成しよう

#02:テンプレートを共通化しよう

  • 共通テンプレートの変更部分を指定する
    resources/views/layout.blade.phpを新規作成
    • <body>
       @yield('content')
      </body>
  • その他のphpファイルに、セクションを追加
    resources/views/index.blade.phpの編集
    • @extends('layout')

      @section('content')
       (内容)
      @endsection

#03:掲示板にBootstrapを適用しよう

  • Bootstrapを読み込む
    resources/views/style-sheet.blade.phpを新規作成
  • ナビゲーションバーを追加する
    resources/views/nav.blade.phpを新規作成

#04:Bootstrapでページの見栄えを整えよう

  • 一覧ページをテーブルとボタンに変える
    resources/views/index.blade.phpの編集
  • 詳細ページのボタンを変える
    resources/views/show.blade.phpの編集

#05:検索フォームを設置しよう

  • Form用ライブラリのインストールについて
    • Laravelでフォームを使用するには、「laravelcollective/html」というライブラリが必要になる。
      $ composer require "laravelcollective/html"
※ 前レッスンでインストール済み
  • ファサードとは
    • Laravelでフォームを利用するには、2重の波カッコにフォームと記述する。このような部品を、Formファサードと呼ぶ。
    • ファサード(facade)とは、建物の入り口という意味。Laravelのファサードは、アプリケーションのサービスコンテナに登録したクラスに対するインターフェイスを提供する。
  • 検索フォームのテンプレートを用意する
    resources/views/search.blade.phpの新規作成
  • 記事一覧に検索フォームを追加する
    resources/views/index.blade.phpの編集

#06:フォームの値を取得しよう

  • 検索機能を追加する
    app/Http/Controllers/ArticleController.phpの編集

#07:掲示板のルーティングを設計しよう

  • ルーティングを記述する
    routes/web.phpの編集
    • 投稿:Route::post('/article', 'ArticleController@store')->name('article.store');
    • 編集:Route::get('/article/edit/{id}', 'ArticleController@edit')->name('article.edit');
    • 更新:Route::post('/article/update/{id}', 'ArticleController@update')->name('article.update');
  • コントローラのメソッドをテストする
    app/Http/Controllers/ArticleController.phpの編集
    • public function edit(Request $request, $id, Article $article)

#08:新規投稿フォームを作成しよう

  • コントローラのstoreメソッドで、固定テキストを保存する
    app/Http/Controllers/ArticleController.phpの編集
    • public function store(Request $request)
  • createメソッドで、フォームを呼び出す
    app/Http/Controllers/ArticleController.phpの編集
    • public function create(Request $request)

#09:記事の保存機能を完成させよう

  • 新規投稿フォームをnew.blade.phpに記述する
    resources/views/new.blade.php
  • 投稿内容を保存するようstoreメソッドを修正する
    app/Http/Controllers/ArticleController.phpの編集
    • public function store(Request $request)

#10:編集フォームを追加しよう - その1

  • コントローラに、Editを追加する
    app/Http/Controllers/ArticleController.phpの編集
    • public function edit(Request $request, $id, Article $article)
  • 編集フォームを記述する
    resources/views/edit.blade.phpの新規作成

#11:編集フォームを追加しよう - その2

  • コントローラに、updateを追加する
    app/Http/Controllers/ArticleController.phpの編集
    • public function update(Request $request, $id, Article $article)
  • show.blade.phpから、編集フォームにリンクする
    resources/views/show.blade.php

認定証

チャプター9を終了した時点で、学習ステータスの進化と認定証の交付があった。
チャプター10と11には、演習課題がないからか。


学習ステータス



コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

paizaラーニング『Laravel入門編2: Laravelの動作を理解しよう (全7回)』を受講してみた

2021-02-21 13:29:28 | paiza

『Laravel入門編2: Laravelの動作を理解しよう (全7回)』


メモ

#01:データベースとルーティングを理解しよう

  • MVC:Laravelの主な機能ブロック
    - モデル:アプリで扱うデータを保持し、操作する
    - ビュー:データの表示形式を記述する
    - コントローラ:リクエストに応じて、モデル・ビューを呼び出す
    + ルーティング:リクエストを振り分ける
  • Laravelでデータベースを操作する機能
    - artisan tinker:Laravelアプリの環境を有効にしたまま、コマンドで操作
    - Eloquent:データベースのレコードをモデルクラスで処理する、O/Rマッパー
    - マイグレーション:データベースの操作を一括実行・取り消し

#02:artisan tinkerでデータベースを確認しよう

  • artisan tinkerとは:Laravelに含まれているコマンドラインインターフェイス。
    • artisan tinkerを使うと、Laravelアプリの環境を有効にしたまま、Laravelの機能をコマンドで操作できる。
  • artisan tinkerを起動する
    $ php artisan tinker
    • PHPのコマンドを実行できる
    • exitで終了(または、CTRL+Cキー)
  • 主な操作コマンド
    • すべてのデータを取り出す
      >>> Article::all()
    • 指定idのレコードを取り出し、カラムを出力
      >>> $article = Article::find(1)
      >>> $article->content
    • echo関数を使わずに、変数名を記述すると、そのまま値を出力する
      >>> $article
    • レコードを追加する
      >>> $article = new Article()
      >>> $article->content = 'Hello tinker'
      >>> $article->save()
    • 指定idのレコードを取り出し、削除する
      >>> $article = Article::find(1)
      >>> $article->delete()

#03:マイグレーションで、カラムを追加しよう

  • マイグレーションとは
    一般的に、マイグレーションとは、データベースの中身を一括して移行したり変更したりする作業のこと。Laravelのマイグレーション機能では、データベースの定義や変更を一度に行うことができる。
    • Laravelでは、データベース設定ファイルを自動生成
    • マイグレーションは、2段階で行う。まず、専用のコマンドを使ってマイグレーションファイルを作成して、それから必要な情報を修正して、データベースに適用する。
  • カラムを変更する前に、ライブラリを追加
    Laravelでカラムを変更するには、doctrine/dbalというライブラリが必要になる。
    doctrine/dbalを追加するには、次のコマンドを実行します。

    $ composer require doctrine/dbal
  • マイグレーションファイルを自動生成する
    $ php artisan make:migration add_column_username --table=articles
  • マイグレーションファイルにuser_nameカラムを追加する
    database/migrations/20xx_xx_xx_xxxxxxxx_add_column_username.phpの修正
    • upメソッド:データベースに追加する項目を指定する
      $table->string('user_name');
    • downメソッド:取り消したい項目を指定する
※ 何だろう?うまくいかない。カラムを追加できないな😞 
Web上の環境だとうまく行くんだけどな。
自分の環境だと、自分で書いたコードもpaizaからダウンロードしたコードも同じようなエラーが出て、追加できない。

#04:モデルに追加したカラムをビューで表示しよう

  • indexビューにカラムを追加
    bbs/resources/views/index.blade.phpの編集
  • showビューにカラムを追加
    bbs/resources/views/show.blade.phpの編集

#05:Laravelのルーティングを理解しよう

  • 通信方式を指定するメソッド
    Laravelでは、ブラウザとの通信にHTTPメソッドを指定する。情報を表示するだけなら「GET」を使い、情報を投稿する場合は「POST」を使っている。また、記事を削除する場合は「DELETE」メソッドを指定する。
  • ルーティングでリダイレクトを設定
    「/」にアクセスしたら、「/articles」にリダイレクトする
    • routes/web.phpの編集

#06:データベースに書き込んでみよう

  • 新規投稿のルートを追加する
    bbs/routes/web.phpの編集
    • Route::get('/article/new', 'ArticleController@create')->name('article.new');
  • コントローラに、createメソッドを追加する
    bbs/app/Http/Controllers/ArticleController.phpの編集
  • 記事一覧のビューに、新規投稿リンクを追加する
    bbs/resources/views/index.blade.phpの編集

#07:データベースから記事を削除しよう

  • ルートを設定する
    bbs/routes/web.phpの編集
    • Route::delete('/article/{id}', 'ArticleController@destroy')->name('article.delete');
  • コントローラのdestroyメソッドを追加する
    bbs/app/Http/Controllers/ArticleController.phpの編集
  • 詳細ページのビューに、削除ボタンを追加
    bbs/resources/views/show.blade.phpの編集
  • Form用ライブラリのインストールについて
    削除ボタンを追加するには、Laravelでフォームを使用する場合に必要となる「laravelcollective/html」というライブラリをインストールする。
    $ composer require "laravelcollective/html":"^5.4.0"
※ 自分の環境の場合、上記コマンドのうち赤い部分は記述しない方が良いみたいだった。多分、指定しているバージョンが古いんだろう。

認定証



学習ステータス



コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする