질문을 삭제하지 말아주세요.!
 
2
1
0

27장 파일 첨부 기능과 관련해서 p290의 코드 27-19까지 작성하고 테스트해보면 아티클 모델과 attachment모델이 연결이 안 됩니다.


아티클 작성폼에서 파일선택

-> 드롭존 ajax

-> (AttachmentsController)json response : article_id는 없음

-> 드롭존의 'successmultiple' 콜백 : 작성폼에 attachment hidden input 삽입

-> 작성폼 submit

-> (ArticlesController::store()) : article 모델 create (DB저장)


이런 흐름인데 AttachmentsController에서 만든 Attachment 모델과 ArticlesController에서 만든 Article 모델을 연결하는 로직이 없는 것 같습니다.


그래서 ArticleController::store()에 다음과 같이 작성해 주었더니 두 모델이 연결되고 route('articles.show', {article_id}) 에도 첨부 파일이 잘 표시되었습니다.


if ($request->attachments) {            
    foreach (\App\Attachment::find($request->attachments) as $att) {
         $att->article_id = $article->id;
         $att->save();
    }
}



제가 궁금한 것은

1. 책대로 따라하면 정상적으로 두 모델이 연결되는데 제가 무언가를 놓쳤던 것인지 아니면 원래 책에 이런 로직의 누락이 있었는지?

2. 위와 같이 수동으로 attachment 모델 각각에 article_id를 입력하고 저장하는 방식 말고 ArticlesContoroller::store()의

$article->tags()->sync($request->input('tags'));

의 예에서와 같이 자동으로 싱킹하는 방법은 없는지?

3. $article->attachments()->sync($request->input('attachments')); 는 오류가 나더군요. 아마도 one-to-many 관계라서 그럴까요? 아니면 Attachment 모델에는 이 상태에서는 article_id가 null이기 때문일까요?

입니다. 감사합니다.

    CommentAdd your comment...

    1 answer

    1.  
      2
      1
      0

      신모범님 고맙습니다. 누락된 것이 맞습니다. 아래 링크에서 내용 확인 바랍니다.


      https://github.com/appkr/l5code/issues/7

      1. 신모범

        $request->getAttachments()->each(function ($attachmentuse($article) {


          $attachment->article()->associate($article);

          $attachment->save();
        });

        아하 이게 바른 방식이군요. 감사합니다. 
      CommentAdd your comment...