6
2

More than 3 years have passed since last update.

rails と比べて laravel は、、、(雑感)

Posted at

はじめに

udemy で laravel のコースを一つやってみただけなのですが、それまで勉強してきた ruby on rails を書くくときと比べて感じたことを書き残す。

テーブル内の要素(カラム・オプション等)の変更がしやすい

laravel は、データベースの内容を変更するのが、rails と比べてかなり楽です。migration ファイルにデフォルトで、up と down のメソッドが記述されているのもかなり助かります。

railsを使っているときにめんどくさいなあと思っていたのが、テーブルにカラムを追加したり削除したり、オプションを追加したりするとき、いちいち rollback したり新しく migration ファイルを作らなきゃいけなかったりしなきゃいけないことです。

さらには、オプションを追加する際、自分で up, down のメソッドを記述しないと、後で migration ファイルを削除したくなって、rollback を使って遡ることができなくなるんです( migrate:status を down にできなくなる)。このことを全く知らずにやってしまい、かなり痛い目にあったのを覚えています。

validation の書き方が若干違う

記述場所

rails では model に validation の記述するのに対して、

laravel では、controller または FormRequest という rails にはなかったファイルに記述します。

validation 実行のタイミング

rails では Model の create や save,update の実行時に validation が実行されていましたが、

laravel は controller のメソッド内です。また、FormRequest に記述すれば、controller のメソッドに入ったタイミングで validation が終わっているという状態にできます。

謎のDI ( Dependency Injection ) という考え方

これが今のところ一番理解できていない部分。railsではなかった考え方だ。(自前で実装することはできるらしい)。詳しくは、この記事の最後にある参考文献のページを読んで欲しい。なんとなくは理解できるのだが、実際に使えと言われると難しい。

なのでここでは詳しい説明はできない。

簡単にいうと、クラス内でインスタンスの生成をすることはやめましょう、ってことです。

記述量が多い

railsと比べるとlaravelはコマンドラインにしろコーディングにしろ、長くて書きにくいです。

rails

items = Item.all
item = Item.find(1)
name = item.name 

#コマンドライン
rails s

rails db:migrate

laravel

$items = Item::all();
$item = Item::find(1);
$name = $item->name;

//コマンドライン
php artisan serve

php artisan db:migrate

ご覧の通りです。

ユーザー認証系の機能がデフォルトで備わっている

railsには、ユーザー認証系の機能を追加するためには、devise という gem をインストールする必要がありましたが、laravel の場合はデフォルトで備わっています。そんなに大きな違いではないのですが、参考までに。

おわりに

まだまだlaravel始めたてで、理解が浅い部分がありますが、まとめてみました。もし記述に間違いがご指摘いただけると幸いです。

参考資料

LaravelとRailsの機能を比較!ルーティング・ORM・DIなどをまとめてみました
https://techblog.raccoon.ne.jp/archives/1550033605.html

Laravelの依存性の注入(DI)を具体的にどう使うのか
https://qiita.com/ishiitakeru/items/e47dbb3e5b07078cc9b5

依存性の注入について
https://laraweb.net/surrounding/2001/

6
2
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
6
2