0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Rails7 とLaravel10】modelを担うファイルの記述方法比較

Last updated at Posted at 2024-09-09

前提

両者PostモデルとUserモデルを作成してあります。基本的なcrudを実装する想定です

比較

laravelと比較したrailsの特徴

・テーブルとクラスの関連付けによる命名ルールはLaravelと同じで、テーブル名の単数系
・リレーションメソッドの定義が簡潔

Post.rb
class Post < ApplicationRecord
    belongs_to :user
end

リレーションメソッドは以下のように使えます
パラメータで受け取ったidのpostインスタンスと投稿者名を返す関数になります

posts_controller.rb
def show
    @post = Post.find(params[:id])
    # 以下のuser
    user_name = @post.user.name
    render json: { post: @post, user_name: user_name }
end

railsと比較したLaravelの特徴

・記述量は多くなりますが、userが関数(メソッド)であることが分かりやすい

Post.php
namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Post extends Model
{
    protected $fillable = ['title', 'content', 'user_id'];
    
    public function user()
    {
        return $this->belongsTo(User::class);
    }
}

リレーションメソッドは以下のように使えます

PostController.php
public function show($id)
    {
        $post = Post::findOrFail($id);
        //以下のuser
        $user_name = $post->user->name;
        
        return response()->json([
            'post' => $post,
            'user_name' => $user_name
        ]);
    }
0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?