2017-11-01 3 views
0

Laravel 5.5.13을 사용하고 있습니다.Doing -> 여러 관계로 저장

나는 Thumb이라는 모델이 있습니다. 이 엄지는 다 대일 관계 인 두 가지와 관련됩니다 : PlayerComment. 내가 $entity->thumbs()->save

를하고있는 중이 야하기 때문에 방법에 있습니까

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을 설정할 필요가 없습니다 :

나는 현재이 같은 일을 $entityAndPlayer->thumbs()->save을 수행 하시겠습니까? 아니면 내가 권장하는 방법보다 위의 방법입니까?

답변

1

외부 열 2 개를 설정하여 관계가 올바르게 표시되도록 관계를 사용할 수 없습니다. 그러나 당신은 내 생각에 조금 더 깨끗하게 만들 수 있습니다.

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

을 다음 대신 : Thumb 모델로

당신은 추가 할 수

$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]); 
+0

이 게시물에서 많은 것을 배웠습니다! 특히 정말 멋지다 두 배열을 추가! 나는 전혀 몰랐다! '$ request-> all() + [ 'player'=> $ player]'고마워요! – Blagoh

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); 
} 
+0

감사합니다 안드레, 내 관계는 일대 다 많았으므로 '붙임'이 없었습니다. ( – Blagoh