我使用的是Laravel 5.5.13。
我有一个名为Thumb
的模型。这个拇指与多对一关系中的两件事有关:Player
和Comment
。
我目前做的事情是这样的:
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
吗?或者是我在推荐方式之上做到的方式?
答案 0 :(得分:1)
您无法使用关系设置2个外部列,因此您显示的方式是正确的。但是你可以在我看来让它更清洁。
进入Thumb
模型,您可以添加:
public function setPlayer(Player $player)
{
$this->player_id = $player->id;
}
然后代替:
$thumb->player_id = $player->id;
你可以使用:
$thumb->setPlayer($player);
或者你可以添加create setPlayerAttribute
方法,最后代替:
$thumb = new Thumb($request->all());
$thumb->player_id = $player->id;
只使用:
$thumb = new Thumb($request->all() + ['player' => $player]);
答案 1 :(得分:1)
您不能同时保存多个关系,但是对于多对一关联,您可以使用方法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);
}