2017-02-02 5 views
0

사용 된 버전 : Laravel 5.4이후의 관계 관계

Google에 게시물이 있으며 해당 게시물에 여러 사진이있을 수 있습니다. 우리는 포스트를 저장하는 컨트롤러와 사진을 저장할 다른 포스트를 사용합니다. 나는 새 게시물을 작성하는 형태로 갈 때

class Post extends Model 
{ 
    public function pictures() 
    { 
     return $this->hasMany(Picture::class); 
    } 
} 

class Picture extends Model 
{ 
    public function post() 
    { 
     return $this->belongsTo(Post::class); 
    } 
} 

, 나는 실제로 포스트를 저장 전에 해당 게시물 에 사진을 추가 할 수 있습니다

우리는 그래서 같은 모델의 관계를 설정합니다. 즉, 사진을 저장할 때 나는 여전히 그것에 연결된 게시물 ID가 없다는 것을 의미합니다.

내 질문은 다음과 같습니다

  • PHP를 사용, 이전 또는 이후에 게시물에 사진을 연결하는 깨끗한 방법은 무엇입니까?

내가 현재 사용하고있는 해결책은 양식을 새로 만들 때 빈 우편물을 손에 들고 URL에 ID를 전달한다는 것입니다. 그것을하는 더 좋은 방법이어야합니다.

+0

먼저 게시물을 작성한 다음 사진을 작성하는 것이 어떤 문제입니까? – Vikash

+0

사진은 포스트 작성 양식의 일부입니다. 따라서 사용자가 사진을 추가하면 실제 게시물이 아직 생성되지 않습니다. 게시물은 게시물이 저장 될 때 연결이 이루어져야합니다. – Ruben

+0

다음 또한. 동일한 양식에서 먼저 게시물을 작성한 다음 동일한 컨트롤러 기능으로 그림을 업로드 할 수 있습니다. 드물게 포스트가 생성되고 그림이 업로드되지 않으면 laravel의 쿼리 빌더 트랜잭션을 사용할 수 있습니다. 그렇지 않으면 게시 ID를 수집하고 실패 할 경우 삭제할 수 있습니다. try catch 블록을 사용할 수 있습니다. – Vikash

답변

0

당신은 사용자 액세스가 포스트 페이지를 만들 때 (이미하고있는대로) 양식을 만들이

먼저 시도 할 수 있습니다.

이는 생성 후보기

public function showCreatePost() 
{ 
    $post = Post::create(['field_name' => '', // put your attributes]); 

// pass other data as well if you want. 
    return view('your_create_view',compact('postId',$postId)); 
} 

변화 postid있을 것이다 imageupload의 경로를 보여주는 함수입니다 가정하자. 예 :

Route::post('post/image/{postId}','[email protected]'); 

게시물 편집을위한 하나의 경로를 만들고 게시물 ID가있는 게시물을 편집하는 데 사용하십시오.

Route::post('post/edit/{postId}','[email protected]'); 

이제 양식 동작으로이 두 경로를 사용하여 소식을 편집하고 이미지를 업로드 할 수 있습니다. 경로 예 아래에

URL에 ID를 표시하는 것은 좋지 않습니다. 그래서 당신이 어떤 문제에 직면하면이 방법으로 당신이 시도해 볼 수 있습니다.

+0

나는 지금 내가하고있는 것과 많이 닮았다. 양식 작업에만 ID를 전달하기 때문에 조금 깔끔합니다. – Ruben

+0

예.하지만 사용자에게는 표시되지 않습니다. 따라서 사용자가 세부 정보를 저장할 때마다 편집 경로를 누르십시오. – Vikash