インストール方法(7系での認証機能付き)
version7系でインストールするには、
$ composer create-project --prefer-dist laravel/laravel=7 [project_name]
$ laravel new [project_name] --authとしたいのだが、これだと最新の8系が構築されてしまう。今後、8系に移行したいが、今はなれた7系を使いたいので、create-project~を使う。
認証機能(新規登録、ログイン)を追加するには、
$ cd [project_name]
$ composer require laravel/ui=2
$ php artisan ui vue --auth
を実行する。
上のコマンドのlaravel/ui=2としたのは、最新版の3だと、エラーが出たので。調べると、おそらく7系はlaravel/uiが3系では実行できない様子。
その後、
$ npm install
$ npm run dev
サーバーを立ち上げて、トップページにアクセスすると、認証機能が追加されていることが確認できればオッケー。
.gitignoreに以下を追加する。
/public/js
/public/css
デプロイするときには、改めてコンパイルする。
日本語化
Qiita - Laravel学習備忘録その3を参考にする。
データベースのシーディング
seederを使う
マイグレーションファイルでテーブルを作成し、モデルにfillableの設定などをしたあと、シーダーを作成する。
php artisan make:seed TasksTableSeeder
<?php
use App\Task;
use Illuminate\Database\Seeder;
class TasksTableSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
for ($i = 1; $i <= 10; $i++) {
Task::create([
'title' => 'title' . $i,
'content' => 'content' . $i,
'person_in_charge' => 'person_in_charge' . $i,
]);
}
}
}
factoryを使ってUserデータをシーディングする
Laravel7では、すでにUserに関しては、factoryが備わっていた。ちょう便利。
ありがたく使わせてもらう。
なお、config/app.php内のfaker_localeはja_JPに設定忘れないように。初期のままだと英語でできあがる。
php artisan make:seed UsersTableSeeder
<?php
use Illuminate\Database\Seeder;
use App\User;
class UsersTableSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
factory(User::class, 20)->create();
}
}
DatabaseSeeder.phpに設定する。
public function run()
{
$this->call([
TasksTableSeeder::class,
UsersTableSeeder::class
]);
}
あとは、以下コマンドを実施でデータがシーディングされる。
composer dump-autoload
php artisan migrate --seed
テーブルをまっさらにしてから、シードしたい場合は、代わりに
php artisan migrate:fresh --seedを実行。
多対多のリレーション時の中間テーブル名
結論は、アルファベット順に結合する。逆順につないで、何回もエラーが出て、なんでだとドキュメントを見てたら、書いてあった。
例:tasksとusersをつなぎたい場合は、task_userが正解!
Tinkerでのユーザーログイン
tinker上で、機能を試したいときに、ユーザーログインが必要な場合がある。
そうしたときに以下コマンドを実行。
Auth::loginUsingId(1);
これでid=1でログインできた。
ログインをチェックするには、
Auth::check();
ログアウトは、Auth::logout();
これらは、tinkerの中だけでなく、Laravelプロジェクトの中で自由に使えるようなので活用すること。
クエリビルダのboolean
マイグレーションファイルで、カラムを作成するときに、yesかNOで作りたい場合はたぶんboolean型を使えばいいと思う。以下のように記述する。
$table->boolean('hoge')->default(true)
とすると、MySQLではtinyint(1)の型となり、デフォルトが1となる。trueのところを1と書いてもいい。
デフォルト設定しているのは、どこかの記事(ソース不明)でnullとしてしまうと何かと面倒のようだから。