做->保存到多个关系

Doing ->save to multiple relations

我正在使用 Laravel 5.5.13。

我有一个名为 Thumb 的模型。这个拇指与多对一关系中的两个事物相关:PlayerComment.

我目前做的事情是这样的:

public function store(Request $request, Entity $entity, Player $player)
{
    $thumb = new Thumb($request->all());
    $thumb->player_id = $player->id;
    $entity->thumbs()->save($thumb);
    return response()->json($thumb, 201);
}

我们知道我必须如何设置 $thumb->player_id 并且我不必设置 entity_id 因为我正在做 $entity->thumbs()->save

有办法$entityAndPlayer->thumbs()->save吗?还是我的做法高于推荐方式?

您不能使用关系来设置 2 个外部列,因此它们显示的方式是正确的。但是我认为你可以让它更干净一些。

您可以添加到 Thumb 模型中:

public function setPlayer(Player $player) 
{
     $this->player_id = $player->id;
}

然后代替:

$thumb->player_id = $player->id;

你可以使用:

$thumb->setPlayer($player);

或者您可以添加创建 setPlayerAttribute 方法,最后代替:

$thumb = new Thumb($request->all());
$thumb->player_id = $player->id;

仅使用:

$thumb = new Thumb($request->all() + ['player' => $player]);

您不能一次保存多个关系,但是,对于多对一关联,您可以使用方法 associate() (Laravel docs) 来保存使用 属于部分关系,例如:

public function store(Request $request, Entity $entity, Player $player)
{
    $thumb = new Thumb($request->all());
    $thumb = $thumb->save();

    $thumb->player()->associate($player);
    $thumb->entity()->associate($entity);

    return response()->json($thumb, 201);
}