Laravel day 2

前回までのLaravel

前回Modelを使用しようとしたところ、phpMyAdminが動作しないことが発覚。調査の結果、Apacheのモジュールからphpが削除されていることが判明。今後のことを考えてphpが動作するようにする。

MacのApacheでphpが動作するようにする

選択肢は二つ。Monterey標準Apacheにphpをインストールするか、homebrewでApache入れるか。難易度は前者の方が高そう。
前者はphpのバージョンアップのたびに作業が発生するようなので、後者で行う。

Homebrewのインストール

以前インストールしたhomebrewが動かなかったため、再インストール

% /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
% echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> /Users/doi/.zprofile
% eval "$(/opt/homebrew/bin/brew shellenv)"

httpdのインストール

% brew install httpd
% sudo -s launchctl stop /System/Library/LaunchDaemons/org.apache.httpd.plist
% sudo -s launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist
% brew services start httpd
==> Successfully started `httpd` (label: homebrew.mxcl.httpd)
% ps xa | grep httpd

httpdの設定

設定ファイルの変更
/opt/homebrew/etc/httpd/httpd.conf

Listen 80
LoadModule rewrite_module lib/httpd/modules/mod_rewrite.so 有効化
LoadModule php_module /opt/homebrew/lib/httpd/modules/libphp.so
<IfModule php_module>
  AddType application/x-httpd-php .php
</IfModule>
ServerName localhost:80
<IfModule php_module>
PHPINIDir /opt/homebrew/etc/php/8.1/
</IfModule>
Include /opt/homebrew/etc/httpd/extra/phpmyadmin.conf
% sudo apachectl restart

コラム:Laravelが動かなくなった

突然 php artisan serve した後に、Operation not permitted というエラーが出てページを表示できなくなった。パーミッションを変更しても解消せず。また、ps xa -u で実行ユーザを確認しても所有者と一緒。ということは、可能性は一つ。セキュリティソフト。
当たり。ウィルスバスターのフォルダシールドが未許可のプログラムからのアクセスを拒否していた。なので、phpを許可プログラムに追加。解決。 


Modelを使ってみる

ORMは初めてではないけど、おさらい。
簡単に言えば、RDBとオブジェクトを関連づける考え方ってことかな。ORMから逃げてきた1番の理由。SQLをゴリゴリ書いてきた人間にとって、ORMの考え方が相反する。まあ、あれから随分経つしきっと解決していると期待して学習しよう。
まずは、テーブル作って、初期データをインポート。

CSVデータから初期データを登録する

Laravel 初期データをセットする(シーダー機能+CSVファイル)

Laravel学習帳

上記を参考にテーブルを作成し、初期データを登録する。手順は

  1. goodby/csvをインストール

  2. マイグレーションのスケルトンを作成

  3. 作成したmigrationファイルを修正

  4. マイグレーションの実行←この時点でDBにテーブルが作成される

  5. モデルのスケルトンを作成

  6. 作成したmodelファイルを修正

  7. 初期データのCSVファイルを配置(database/seeders)

  8. シーダーのスケルトンを作成

  9. seederファイルを修正してModelのフィールドにCSVを合わせる

  10. シーダーの実行

% composer require "goodby/csv":"*"
% php artisan make:migration create_sample_table --create=Sample
マイグレーションファイルの修正
% php artisan migrate
% php artisan make:model Sample
モデルファイルの修正
% php artisan make:seeder SampleTableSeeder
シーダーファイルの修正
% php artisan db:seed --class=SampleTableSeeder

シーダーを実行した際に、エラーが発生。
Base table or view not found: 1146 Table ’テーブル名’ doesn't exist
テーブル名に_が入ってしまっている。原因は不明。
とりあえず、Modelファイルに
protected $table = 'Sample';
を追加してテーブル名を強制する。


テーブル内にデータがインポートされていることを確認

次回:Modelを使ってみる

今回はここまで。次回は、Model View Controllerを使ってみる

この記事が気に入ったらサポートをしてみませんか?