「Laravel」タグアーカイブ

Laravel artisanコマンド一覧

Laravelで実装するにあたってよく使うartisanコマンドをまとめます。

マイグレーション

公式ドキュメント

# php artisan make:migration create_hoges_table
  • [プロジェクト名]\database\migrations配下に生成されます
  • Laravelでは、テーブル名は複数形(スネーク形式)、エンティティモデルは単数形(アッパーキャメル)が命名規則だそうです。(例)テーブル名:hoge_photos モデル名:HogePhoto
# php artisan migration
  • 生成済みのマイグレーションファイルにて、データベースが更新されます
# php artisan migrate:refresh
  • 生成済みのテーブルが再作成されます

シーディング

公式ドキュメント

# php artisan make:seed HogeTableSeeder
  • 作成したテーブルにあらかじめデータを設定したい場合、Seederを使ってデータを挿入します
# php artisan db:seed
  • app/database/seeds/DatabaseSeeder.php に設定されたシーダーが実行されます

認証のマイグレーション

# php artisan make:Auth
  • Usersテーブルが生成されます

Model

# php artisan make:model Hoge
  • app配下にモデルクラスが生成されます。
# php artisan make:model Models\Hoge
  • 作成先ディレクトリを指定してモデルを作成することもできます
  • この場合、Modelsフォルダの下にHogeクラスが生成されます

Controller

# php artisan make:controller HogeController
  • app\Http\Controllers配下に生成されます

Provider

公式ドキュメント

# php artisan make:provider HogeServiceProvider
  • app\Providers配下に生成されます

日記(2019/01/27)CoreServerでLaravel(コントローラ)

今日はコントローラを作成します。

処理の流れは、

  1. ルーティング(routes/web.php)
  2. コントローラ(app/Http/Controllers/***Controller.php)

となるようです。

SpringBootや、ASP.netのMVC5、Djangoなどと同じような流れと思ってよさそうです。

Controllerクラスのテンプレートファイルを、artisanコマンドで作成します。今回は承太郎クラスを作成します。

[hogeo@coresrv lalaproject]$ php71cli artisan make:controller JotaroController
Controller created successfully.

 

作成したクラスを編集していきます。今回はターミナルからそのままviで編集していますが、どうもartisanコマンドでクラスファイルを作るとCoreserverの仕様なのか、ファイルのエンコードが「fileencoding=iso-2022-jp」となり、ブラウザで表示した際に日本語が文字化けしてしまいす。

丁寧にVSCodeなどで編集してファイルエンコードなどを確認してから保存したほうがよさそうです。artisanコマンドで生成されるクラスファイルは以下の場所になります。

vi app/Http/Controllers/JotaroController.php
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class JotaroController extends Controller
{
        public function sigh()
        {
                return 'やれやれだぜ。';
        }
}

 

こんな感じに編集した後に、「set fileencoding=utf-8」をvi上で設定して、上書きします。ちなみにエンコードを確認するコマンドは「set fenc?」です。

次にルーティングを編集してあげます。

[hogeo@coresrv lalaproject]$ vi routes/web.php
<?php

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/

Route::get('/', function () {
    return view('welcome');
});

Route::get('/hello', function () {
    return 'hello! the world!';
});

Route::get('/sigh','JotaroController@sigh');

一番下の行を追加しました。第一引数にパス、第2引数にクラスのメソッド名という感じでしょうか。ちゃんとドキュメント読んでないので慣れてきたら読もうと思います。前回の/helloのルーティングは無名関数でメソッドを設定している感じですね。

編集が終わったら、ルーティングを通した「https://lala.jamjar.jp/sigh」を確認してみます。

うまくいきました。

日記(2019/01/26)CoreServerでLaravel(ルーティング)

前回の続きから

ルーティングをいじってみます。

Laravelのバージョンは5.7です。

[hogeo@coresrv routes]$ pwd
/virtual/[account_name]/laravel/lalaproject/routes

[hogeo@coresrv routes]$ ls
api.php  channels.php  console.php  web.php

[hogeo@coresrv routes]$ vi web.php

<?php

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/

Route::get('/', function () {
    return view('welcome');
});

/*
 * 追加
 */
Route::get('/hello', function () {
    return 'hello! world!';
});

うまくいったようです。

 

日記(2019/01/25)CoreServerにLaravelをインストール

CoreServerにLaravelをインストールしました。PHPは業務では全く触ったことがないのでちょっと楽しいです。

下記の記事を参考にさせていただきました。

●LaravelをCORESERVER(XREA)で動かす
https://qiita.com/studio15/items/d0abf6e6feb2cf3b0408

記事ではシェルを切り替えて…と記述されていますが、特に意識せずインストールすることができました。(echo $0(ゼロ)で現在のシェルを確認しましたが、bashでした。)また、後で気づいたのですが、php71cliにはパスが通っているようなので「/usr/local/bin/php71cli」とフルパスでコマンドを実行しなくても問題なさそうです。

「composer」を用いてライブラリをインストールしていくのですが、公式サイトを確認すると「composer」のハッシュキーが上記サイトと異なっていますので、公式サイトのコマンドラインを参考に打ち込んでいくとよいと思います。
https://getcomposer.org/download/

2019年1月26日時点では以下のようなコマンドラインになります。公式サイトから「composer-setup.php」をコピーし、ハッシュ値をチェック後composerをインストールし、unlinkで後片付けという流れのようです。(php上でcopyしたら、unlinkで削除するんですね。なるほど。)

php71cli -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php71cli -r "if (hash_file('sha384', 'composer-setup.php') === '93b54496392c062774670ac18b134c3b3a95e5a5e5c8f1a9f115f203b75bf9a129d5daa8ba6a13e2cc8a1da0806388a8') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php71cli composer-setup.php
php71cli -r "unlink('composer-setup.php');"

ちなみに、php72cliも使用できるのですが、プロジェクトを作成する際、php72cliを使用するとエラーが発生しました。ですので、プロジェクトを作成する場合は、php71cliを使用します。一連の作業はphp71cliを使用したほうが無難と思います。

プロジェクトを作成時は、

「> @php artisan key:generate –ansi
Application key set successfully.」

のログが最後のようですので、そこまで流れたら成功です。何度か試したのですが、途中でエラーになっている場合があり(プロジェクトファイルは生成される)、InternalServerErrorになる場合がありました。この部分のログは注意して確認したほうが良いです。今回は「lalaproject」というプロジェクト名にします。

php71cli -d register_argc_argv=1 "./composer.phar" create-project laravel/laravel lalaproject --prefer-dist

また、CoreServerは、ドメイン名ごとに公開パスが「public_html/ [ドメイン名] 」と、分かれる仕様となっています。独自ドメインにしたい+無料SSLを設定したい場合は、CoreServerの管理コンソールから、サイトの設定まで行い、作成したLaravelのアプリケーションと任意のドメインの公開パスをシンボリックで紐づけるコマンドを最後に打ちます。ただ、上記のサイトのコマンドラインではちょっとうまくいかなかったので以下のように少し変更しています。

※[account_name]の部分は、契約されているCoreserverのアカウント名に置き換えてください。

ln -s /virtual/[account_name]/laravel/lalaproject/public /virtual/[account_name]/public_html/lala.jamjar.jp

うまくいくと、public_htmlの下で以下のようにリンクが張られます。

[hogeo@coresrv public_html]$ ls -lt
lala.jamjar.jp -> /virtual/[account_name]/laravel/lalaproject/public

インストールできたLaravelのバージョン確認をするコマンドは以下の通りです。artisanというファイルがあるディレクトリで実行しないと、正しく応答が返ってこないので注意です。(artisanって山下達郎のアルバムであったよなぁ。)

[hogeo@coresrv lalaproject]which php71cli
/usr/local/bin/php71cli
[hogeo@coresrv lalaproject]$ php71cli artisan -V
Laravel Framework 5.7.22
[hogeo@coresrv lalaproject]$ php71cli artisan --version
Laravel Framework 5.7.22
[hogeo@coresrv lalaproject]$ ls -l artisan
-rwxr-xr-x 1 hogeo hpusers 1686 Dec 15 23:37 artisan
[hoge@coresrv lalaproject]$

デフォルトの画面は動いたこちら。「https://lala.jamjar.jp/

少しずつ勉強していきたいと思います。少し分かってきたらまとめていきます。

この辺読んでおくと良さそう。

●Laravelでウェブアプリケーションをつくるときのベストプラクティスを探る
https://qiita.com/nunulk/items/da825b265b26c4ab512b