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データから初期データを登録する
上記を参考にテーブルを作成し、初期データを登録する。手順は
goodby/csvをインストール
マイグレーションのスケルトンを作成
作成したmigrationファイルを修正
マイグレーションの実行←この時点でDBにテーブルが作成される
モデルのスケルトンを作成
作成したmodelファイルを修正
初期データのCSVファイルを配置(database/seeders)
シーダーのスケルトンを作成
seederファイルを修正してModelのフィールドにCSVを合わせる
シーダーの実行
% 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を使ってみる
この記事が気に入ったらサポートをしてみませんか?