仅当必填字段存储在db

时间:2018-06-29 10:15:36

标签: php laravel

我有一个链接可以发布处于草稿状态的帖子(帖子表中的stats ='D'):

<a href="{{route('posts.publish', ['id' => $post->id])}}">Publish</a>

我为此链接创建了一条路线:

Route::get('post/{id}/publish', [ 'uses' => 'PostsController@publish', 'as'=>'posts.publish']);

当链接“发布”时,代码将转到PostsController的publish()。在此方法中,必须验证发布的所有必填字段是否都不为空。如果它们为空,则不应该发布该帖子,它应该显示一条消息,通知用户在发布该帖子之前需要引入必填字段(名称,类别,图像,内容等)。否则应发布该帖子,即状态应从“ D”更新为“ P”。你知道如何实现吗?是否有必要使用帖子ID进行查询并检查每个必填字段(如果不为null)?

public function publish($id)
{
    dd($id);
}

2 个答案:

答案 0 :(得分:0)

我假设您在检查publish列草稿状态stats列后显示D按钮

所以像这样使用

public function publish($id)
{
    $p = DB::table('posts')->where('id',$id)->first();
    if($p->name && $p->categories && $p->image && $p->content){
      $p->stats  = 'P';
      $p->save();
      return redirect('/posts')->with("message","Updated Successfully!!");
    }else{
      return redirect()->back()->with("message","Name, Categories, Image Or Content is blank!!");
    }
}

答案 1 :(得分:-1)

非常简单

public function publish($id)
{
     $check_post_status = Db::table('posts')->where('id','=',$id) 
     ->value('stats');
     if($check_post_status === 'D')
      {
         return redirect()->back()
         ->with('flash_message','Post is not published yet');
      }

      $post = Db::table('posts')->where('id','=',$id)->get();

       return $post; 

}

希望您得到了答案