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

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

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

2021-02-19 22:29:17 | paiza

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


どうやらLaravelというPHPのWebフレームワークをインストールする必要があるらしい。
それには、前回の講座(Webアプリ開発入門 PHP-Web編)のEloquentと同様に、Composerを使うみたいだが、
インストールの仕方がちょっと違うようだ。

以下のサイトを参考にインストールしてみた。

Linuxの場合には、いくつかの始め方が示されているが、
このうち、「Composerでのインストール」の「Laravelインストーラ」
を試してみた。

まずは、Laravelインストーラのインストール。

composer global require laravel/installer

前回のEloquentの場合、globalオプションなしで、
プロジェクトフォルダごとに、インストールしていたけど、
Laravelの場合は、グローバルなComposerのパッケージとしてインストールするのがいいのかもしれない。

ただ、この場合、Composerのシステム全体のvendor/binディレクトリを$PATHに配置する必要がある。
Ubuntuの場合は、$HOME/.config/composer/vendor/binにあるようだから、
カレントのターミナルで一時的にPATHを通すだけなら、以下のコマンドを実行する。

export PATH="$PATH:$HOME/.config/composer/vendor/bin"

ただ、それだとターミナルを起動する度に、上記のコマンドを入力するのが面倒だから、
上記のコマンドを.bashrcに書いておくとターミナル起動時に自動的にパスが設定される。

その後、以下のコマンドを実行して、Laravel Installerのバージョンが表示されれば、ちゃんとインストールとパスの設定ができていることが確認できる。

laravel -V

メモ

#01:Laravelの基本を理解しよう

#02:アプリケーションを用意しよう

  • Laravelを使う準備として、アプリケーション用ディレクトリを用意する。このディレクトリを用意するだけで、Webサーバーを起動して、動作を確認できる。
  • アプリケーション用ディレクトリを自動生成する
    $ laravel new bbs
  • ディレクトリ作成を高速化するには
    • "laravel new"コマンドの実行前に以下のような設定をしておけば、コマンドの実行時間を短くできる。

      $ composer config -g repositories.packagist composer 'https://packagist.jp'
      $ composer global require hirak/prestissimo
※ とりあえず自分の環境だとそんなに時間は掛からないから、これは試していない。動画では5分かかる場合もあるって言ってたけど。通信速度が十分速ければ問題ないのかな?
  • Webサーバーを起動
    $ cd bbs
    $ php artisan serve
  • Artisanとは
    ターミナルで「artisan」(アーティサン)コマンドを使ってLaravelの機能を呼び出すことができる。LaravelでWebアプリケーションを開発するときに役に立つ、数多くのコマンドを提供している。

#03:Laravel で HelloWorld

全然、演習課題のジャッジが進まないから、日を改めて再チャレンジ!😠 
これ、問題も問題で、タイトルを表示って表現が紛らわしいな😡 
この表現だと、ページのタイトルかと勘違いしちゃうよな!😤 

#04:1行掲示板を作ろう

  • 1行掲示板のルーティング
ルートメソッド関数表示するページ
/articlesGETindex()一覧画面
/article/<id>GETshow()詳細画面
/article/newGETnew()新規フォーム
/articlePOSTcreate()新規作成
/article/edit/<id>GETedit()編集フォーム
/article/update/<id>POSTupdate()更新
/article/<id>DELETEdelete()削除
  • データベース構成
    - データベース : mybbs
    - テーブル : articles
    - カラム : id, content, created_at, updated_at
  • 上記のデータベースにアクセスするため.envファイルを修正する
    DB_DATABASE=mybbs
    DB_USERNAME=root
    DB_PASSWORD=****

#05:モデルとコントローラを用意する

  • Laravelから1行掲示板のデータベースを操作するモデルを用意する。
    モデルを使うと、PHPのオブジェクトとして、データベースのレコードを操作できるようになる。
  • モデルとマイグレーション、コントローラを作成
    $ php artisan make:model Article -m -c -r
    • 動画では、appフォルダにArticle.phpファイルができているが、
      こちらの環境では、app/Models/Article.phpとなっている。
  • contentカラムを追加
    database/migrations/20xx_xx_xx_xxxxxxxx_create_articles_table.phpを編集
  • マイグレーション実行
    $ php artisan migrate

#06:ルーティングを定義しよう

  • 1行掲示板のルーティング(一覧画面、詳細画面)
    bbs/routes/web.php
    • Route::get('/articles', 'ArticleController@index')->name('article.list');
      Route::get('/article/{id}', 'ArticleController@show')->name('article.show');

#07:コントローラとビューを作成しよう

  • コントローラからデータを渡す
    /bbs/app/Http/Controllers/ArticleController.phpを編集
  • ビューでデータを表示する
    /bbs/resources/views/index.blade.phpを作成
※ ここで(というか前回から)、こちらの環境では、動作なかった。
ちなみに、paizaからダウンロードしたファイルだと問題なく動作した。
PHPやLaravelのバージョンが違うようだから、その影響なのかな?😖 
→ 以下のサイトを参考に、App/Providers/RouteServiceProvider.php の$namespace のコメントアウトを外すことで動くようになった。
#08:記事一覧を作成しよう
  • コントローラで、記事一覧を取得する
    /bbs/app/Http/Controllers/ArticleController.phpの修正
  • ビューで記事一覧を表示する
    /bbs/resources/views/index.blade.phpの修正

#09:詳細画面を作ろう

  • コントローラのshowメソッドで、特定の記事を取り出す
    /bbs/app/Http/Controllers/ArticleController.phpの修正
  • showビューで、指定の記事を表示する
    /bbs/resources/views/show.blade.phpの修正
  • 記事一覧から個別の記事にリンクする
    /bbs/resources/views/index.blade.phpの修正

※ ここもうまく動作せず、「安全な接続ができませんでした」というエラーメッセージが表示された。

個別記事のリンクに飛んだときにhttpsが使われるようだが、これの影響か?
これはpaizaからダウンロードしたコードと自分で1から作成したコードのどちらも同様であった。

認定証

Laravel確かに便利だな!😊 
Apacheを使わずに直でWebサーバーを立ち上げられるしな。
でも、かなり難しい😟 


学習ステータス

見習いアーチャーから駆け出しアーチャーに進化した。

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

paizaラーニング『PHP-Web入門編5:Eloquentでメモ帳アプリを作ろう (全9回)』を受講してみた

2021-02-18 22:22:57 | paiza

『PHP-Web入門編5:Eloquentでメモ帳アプリを作ろう (全9回)』


メモ

#01:PHPとEloquentで作るmarkdownメモ帳アプリ 

#02:データベースを用意する

#03:メモ一覧を表示しよう

  • Eloquentのインストール手順
    $ composer require illuminate/database

#04:メモを表示しよう

#05:Markdownで表示しよう

  • php-markdownのインストール
    PHP用のパッケージ管理ツールcomposerを使用してインストールする。
    $ composer require michelf/php-markdown
  • Markdownに変換するコード
    $my_html = Michelf\Markdown::defaultTransform($note->content);

#06:新規メモを作ろう

#07:新規メモを保存しよう

まただっ!演習課題2で明らかに正解コード書いても、合格しないって・・・!?
スペースや改行を何度もやり直したら、通ったけど!?
この直前もPCがフリーズするし・・・
処理的に重いのかな?
何なんだ!!😡 

まぁ、PCのスペックが低いってのもあるかもしれないが・・・😓 

#08:メモを編集しよう

#09:編集したメモを保存しよう

認定証



学習ステータス


司祭ってどんなランクだろうが、高潔じゃないの?
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

paizaラーニング『PHP-Web入門編4:Eloquentでデータベースを操作しよう (全9回)』を受講してみた

2021-02-18 10:14:24 | paiza

『PHP-Web入門編4:Eloquentでデータベースを操作しよう (全9回)』


なんだか知らないけど、今回のレッスンでは、
ORマッパー「Eloquent」なるものを使ってデータベースを操作することになるらしい。
※ ORM:オブジェクト関係マッピング(Object-relational mapping)

確かに、PHP内にSQL分を書いてデータベースを操作するのは、ちょっと面倒くさい感じがするから、
楽になるのはいいことだな!ちょっと楽しみだ!!😊 

チャプター1でEloquentのインストールに関するサイトが紹介されているが、
「Composerでilluminate/databaseパッケージを取得する」ってのがよく分からなかったので、
ググってみたところ、どうやら先にComposerなるものをインストールする必要があるらしい。

Composerのインストール方法については、
公式サイトを参照すればいいんだろうけど、
以下のサイトが分かりやすかった。日本語だし。


自分の環境だとUbuntuだから、以下のコマンドを実行する。

# composerインストール
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php composer-setup.php
php -r "unlink('composer-setup.php');"
# /usr/local/bin/ 配下にcomposerを移動させて実行権限を付与
sudo mv composer.phar /usr/local/bin/composer  
sudo chmod +x /usr/local/bin/composer
# 動作確認
composer -V

これでおそらく、「Composerでilluminate/databaseパッケージを取得する」に書いてあるコマンドが実行できるようになったかな。

composer require illuminate/database

よし、ちゃんとインストールできたみたいだ。
う〜む、だけど、なぜEloquentをインストールしたいのに、illuminate/databaseなんだろう?

ん?Eloquentを使うプロジェクトごとにインストールして使うのか?

メモ

#01:Eloquentの役割と効果

#02:Eloquentでデータを表示しよう 

  • Eloquentのインストール手順
    $ composer require illuminate/database
  • データベースに接続する
require_once './vendor/autoload.php';
$db = new Illuminate\Database\Capsule\Manager;
$db->addConnection([
 'driver' => 'mysql',
 'host' => 'localhost',
 'database' => 'mydb',
 'username' => 'root',
 'password' => ''
]);
$db->setAsGlobal();
$db->bootEloquent();
  • クラスを定義する
    class Player extends Illuminate\Database\Eloquent\Model {
    }
※ なるほど〜😯 Illuminate\Databaseの中に、Eloquentがあるんだね!😉 

#03:Eloquentでデータベースを使ってみよう - いろんな読み出し

  • 全てのデータを取り出す:以下の2通り
    $players = Player::all();
    $players = Player::select('*')->get();
  • 条件に一致したデータだけを取り出す
    $players = Player::where('level', '>=',  5)->get();
  • 指定したidのデータを取り出す
    $player = Player::find(1);

#04:Eloquentでデータベースを使ってみよう - 追加・更新・削除

  • Eloquentで、データを追加する
    $player = new Player;
    $player->name = '霧島1号';
    $player->level = 1;
    $player->job_id = 1;
    $player->save();
  • Eloquentで、データを更新する
    $player = Player::find(11);
    $player->level += 1;
    $player->save();
  • Eloquentで、データを削除する
    $player = Player::find(11);
    $player->delete();
※ やっぱり追加だけできないな?😟 

#05:Eloquentでテーブルを連結してデータを取り出す

  • Eloquentでテーブルを連結する
    class Player extends Model {
     public $timestamps = false;
     public function job() {
      return $this->belongsTo('Job');
     }

    }
  • 連結したテーブルのデータを表示する
    job->job_name ?>
↓後は、具体例や応用

#06:特定のプレイヤーを表示する - その1 

#07:特定のプレイヤーを表示する - その2
チャプター7の演習課題、説明が足りなすぎる!!😡 

#08:特定職業のプレイヤーインデックスを表示する - その1 

#09:特定職業のプレイヤーインデックスを表示する - その2 

なんだかチャプター9の音量小さいな?

認定証



学習ステータス



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

paizaラーニング『PHP-Web入門編3:データベースの基本を理解しよう (全8回)』を受講してみた

2021-02-17 14:43:32 | paiza

PHP-Web入門編3:データベースの基本を理解しよう (全8回)


なんか前回のレッスンのブログを投稿しようとしたら、
「お客様のリクエストはNTTレゾナントのセキュリティポリシーにより拒否されました。」
ってなって、公開も下書き保存もできなくなってしまった!😲 

仕方ないから、後半の内容を削除して再度試したら、
公開が正しく承認された。😥 

ちょっとなんだか怖いけど、
何も悪いことしようとしてるわけじゃないから、
あんまり恐れることはないかな?😅 

PHPのコードってブログに書くと、誤作動の原因になる可能性あるとかで、
あんまり書いちゃいけないのかな?

メモ

#01:PHPでデータベースに接続しよう

  • PHPで、データベースからデータを取り出す。
  • PDO:PHPからデータベースに接続するためのオブジェクト。
    • PDOを使うことで、データベースが違っても、同じ使い方ができる。

#02:テンプレートでデータを表示しよう

  • MySQLから読み込んだデータをテンプレートを使って表示する。

#03:データベースを使ってみよう - 取り出し

  • 色々な方法で取り出し
    • 列を指定
    • WHEREを使ってレコードを指定
    • SQLの変数は、:変数名
    • PHPの変数は、$変数名
    • bindValue():SQLの変数に値を割り当てる

#04:データベースを使ってみよう - 追加、更新、削除 

  • # データを追加する
    $sql = 'INSERT INTO players (name, level, job_id) VALUES (:name, :level, :job_id)';
  • # データを更新する
    UPDATE players SET level = 10 WHERE id = 11
  • # データを削除する
    DELETE FROM players WHERE id = 11
※ 自分の環境だと、ここがうまく動作しなかった。多分、デバッグを見れるように設定ファイルとか設定しないといけないんだろうな。

#05:テーブルを結合してデータを取り出す 

  • # 左結合
    SELECT * FROM players LEFT JOIN jobs ON jobs.id = players.job_id

#06:データをtableタグで表示する

  • <table>タグを使う

#07:特定のプレイヤーを表示する1

#08:特定のプレイヤーを表示する2 


認定証

このレッスンも、ブラウザ上の環境の準備や演習課題のジャッジにかなり時間がかかったし、
ときには落ちてしまったりする場合もあって、かなりストレスが貯まった!😡 
さらには演習課題に正解コード書いているのに、不正解にされたりもあった!!😤 


学習ステータス

駆け出しから若手司祭に進化した!

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

paizaラーニング『PHP-Web入門編2:フォーム処理の基本を身に付けよう (全8回)』を受講してみた

2021-02-16 21:30:08 | paiza

『PHP-Web入門編2:フォーム処理の基本を身に付けよう (全8回)』


ここでも1行掲示板を作るのか!?

メモ

#01:フォーム処理の基本を理解しよう

  • PHPを利用したフォーム処理とデータ転送について学習する。
    • フォーム処理:
    • データ転送(GETメソッドとPOSTメソッド)

#02:投稿フォームを作ろう

#03:投稿したデータを表示しよう

  • GETメソッド:フォームなどの情報をURLの後ろにパラメータとして追加して送信する。
  • POSTメソッド:メッセージボディにデータを追加して送信する。
  • PHP
    • $_REQUEST['name属性']:受け取ったデータを取り出す。
    • htmlspecialchars():受信したデータのHTMLタグが含まれていた場合に、悪影響のないように変換する関数。

#04:フォームを使ってRPGの戦闘シーンを作ろう1

  • GETメソッドのフォーム
    <form action='result.php' method='get'>

#05:フォームを使ってRPGの戦闘シーンを作ろう2

#06:1行掲示板を作ろう - 投稿したデータを表示する

#07:1行掲示板を作ろう - 投稿内容を表示する

#08:1行掲示板を作ろう - 投稿をファイルに保存する


認定証



学習ステータス



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