Laravel 创建具有两个参照的实体而不使用体量指定的最优雅的方法

Laravel 创建具有两个参照的实体而不使用体量指定的最优雅的方法,laravel,eloquent,Laravel,Eloquent,我有以下实体设置(用户、评级、发布) 用户有很多帖子 用户有很多评级 《华盛顿邮报》有很多收视率 帖子属于用户 评级属于用户 评级属于岗位 我正在寻找一个好方法来创建一个新的评级。例如,通常对于帖子,我会这样做: Auth::user()->posts()->create(...); 以确保为用户提供正确的参考。但是,现在我想包括两个对象。我不想允许大量分配id-例如 Auth::user()->ratings()->create(['value' => 1,

我有以下实体设置(用户、评级、发布)

  • 用户有很多帖子
  • 用户有很多评级
  • 《华盛顿邮报》有很多收视率
  • 帖子属于用户
  • 评级属于用户
  • 评级属于岗位
我正在寻找一个好方法来创建一个新的评级。例如,通常对于帖子,我会这样做:

Auth::user()->posts()->create(...);
以确保为用户提供正确的参考。但是,现在我想包括两个对象。我不想允许大量分配id-例如

Auth::user()->ratings()->create(['value' => 1, 'post_id' => 1, ...])

我还希望不要手动设置所有内容,因为这会使代码“不干净”


有没有办法让所有这些都内联起来?

有些地方不对劲……你应该保存一个值,而不是关系……当然会有一个值——但保存一个值不是我的问题。我将代码简化为实际相关的内容-我将快速添加值那里有问题…你应该保存值而不是关系…当然会有值-但是保存值不是我的问题。我将代码简化为实际相关的内容—我将快速添加值
$post->ratings()->create(['value' => 1, 'user_id' => 1, ...])
$rating = new Rating;
$rating->user = Auth::user();
$rating->post = $post; 
$rating->value = 1;
$rating->save();