1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Laravel学習備忘録その4

1
Last updated at Posted at 2020-09-30

インストール方法(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に以下を追加する。

.gitignore
/public/js
/public/css

デプロイするときには、改めてコンパイルする。

日本語化

Qiita - Laravel学習備忘録その3を参考にする。

データベースのシーディング

seederを使う

マイグレーションファイルでテーブルを作成し、モデルにfillableの設定などをしたあと、シーダーを作成する。

php artisan make:seed TasksTableSeeder
TasksTableSeeder.php
<?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
UsersTableSeeder.php
<?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に設定する。

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としてしまうと何かと面倒のようだから。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?