前提
両者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
]);
}