做->保存到多个关系
Doing ->save to multiple relations
我正在使用 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
吗?还是我的做法高于推荐方式?
您不能使用关系来设置 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);
}
我正在使用 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
吗?还是我的做法高于推荐方式?
您不能使用关系来设置 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);
}