2017-04-25 2 views
3

난 그냥 시스템을 crud하려고. 컨트롤러의 저장 기능에 그것을 위해 내 코드는laravel 5.4 crud의 업데이트 방법은 무엇입니까?

public function store(Request $request) 
{ 
    Article::create([ 
     'user_id' => auth()->id(), 
     'content' => $request->content, 
     'live' => (boolean)$request->live, 
     'post_on' => $request->post_on 
     ]); 

    return redirect('/articles'); 
} 

는 데이터를 저장하기에 충분히있어하지만, 내가 무엇을 할 것입니다 내 편집 기능 코드를 다시 저장 한 후 기사 &을 편집 할 때? 나는 모른다. 나는 편집 기능에 동일한 코드를 시도했다 & 그것은 새로운 기사를 만들지 않는다. 그래서 편집 기능에 맞는 코드는 무엇입니까? 감사합니다

+1

Welcome to StackOverflow! 특정 프로그래밍 문제에 직면하게되면 기꺼이 도와 드리 겠지만 무료 코드를 작성하는 것은 아닙니다. [** 어떻게 좋은 질문을 할 수 있습니까? **] (https://stackoverflow.com/help/how-to-ask) 및 [** 어떤 주제에 관해서 여기에서 질문 할 수 있습니까? **] (https : //stackoverflow.com/help/on-topic). –

답변

3

업데이트를위한 리소스 컨트롤러 메서드는 update()입니다.

public function update(Request $request, $id) 
{ 
    Article::where('id', $id)->update($request->all()); 
    return redirect('/articles'); 
} 

또한 모두 crerate 및 업데이트 데이터 updateOrCreate() 방법에 대해 동일한 컨트롤러와 웅변 방법을 사용할 수 있습니다 :이 작업을 수행 할 수 있도록 update()에 대한 웅변 방법은 너무 update()입니다.

+0

@Masum 내가 사용한 코드와 완전히 다른 코드를 사용하고 있습니다. 'fill()'메소드는 데이터를 업데이트하지 않고 단지 속성을 채 웁니다. 앞서 보았 듯이'fill()'뒤에'$ article-> save();'를 사용하거나'update()'를 사용하십시오. 열없는 : 1,054 알 열의 필드 목록 '(SQL에서'_method ' –

+0

그것이 SQLSTATE [42S22는 이러한 에러 shwos 업데이트'로 설정 articles''_method' = PUT'_token' = l1ZyYVMAQJCAU6mzVXFEYqt2hUSQyAkqws9804aj을'content' 블록 = sadfasdf,'post_on' = 2017-04-25T03 : 43,'Create_Post' = 제출,'updated_at' = 2017-04-25 15:48:20 어디'id' = 13) – Masum

+0

그것은 어떤 것도 보여주지 않습니다. 오류가 있지만 데이터를 업데이트하지 않습니다. – Masum

1

당신은 또한이 같은 개체 형식으로 업데이트 할 수 있습니다 귀하의 모델

protected $fillable = ['user_id', 'content', 'live']; 
1

당신이 당신의 열이 $ 작성 가능한 배열에 속성을 추가해야

public function update(Request $request, $id) 
{ 
    $article = Article::find($id); 
    $article->fill($request->all()); 
} 

확인 할 수 있습니다.

public function update(Request $request, $id) 
{ 
    $article = Article::find($id); 
    $article->user_id = auth()->id(); 
    $article->content = $request->content; 
    $article->live = (boolean)$request->live; 
    $article->post_on = $request->post_on; 
    $article->save(); 
}` 
0

먼저이 분리 된 로직 메소드 store()update()이 두 가지있을 수 있습니다 laravel에서 실제 CRUD에 대한 그래서, 당신은 업데이트를 작성하고, 두 가지 작업 권리가있는 :

/** 
* This is a resource create method which is a HTTP POST. 
*/ 
public function store(Request $request) { 
    // create a new item in database 
} 

/** 
* This is a resource update which is a HTTP PUT METHOD. 
*/ 
public function update(Request $request, $id) { 
    // update the item in database 
} 

을 생성을 위해 POST으로 경로를 설정하고 적절한 crud 리소스를 수행하기 위해 PUT을 업데이트하십시오.

작성 논리를 업데이트 논리에서 분리하는 것이 좋으며 고유 한 데이터 유형이있는 경우 새 자원을 만들기 전에 해당 값의 유효성을 검사해야합니다.

1
public function update(Request $request, $id) { 
    Article::where('id', $id)->update($request->except(['_token'])); 
    return redirect('/articles'); 
}