我正在尝试保存到数据库,如果已经在数据库中,我希望忽略该帖子。这就是我目前保存它的方式。 postid
必须是唯一的。
public function save($type, $postid, $url, $author, $content)
{
$post = new Post;
$post->type = $type;
$post->postid = $postid;
$post->url = $url;
$post->author = $author;
$post->content = $content;
echo $post;
$post->save();
}
答案 0 :(得分:3)
在尝试保存之前,在您想要独特的任何字段上使用Validator
类“unique
验证规则。”
$input = array('postid' => $postid);
$rules = array(
'postid' => 'unique:posts,postid'
);
$validate = Validator::make($input,$rules);
if($validator->passes())
{
$this->save($type, $postid, $url, $author, $content)
}
else
{
$messages = $validator->messages();
echo $messages->first('postid');
}
答案 1 :(得分:2)
如果帖子中已有您要设置的唯一ID,则可以Post::findOrFail(UNIQUE_ID)
在try ... catch ...
结构中使用{{1}}进行后备。
答案 2 :(得分:0)
您可以在验证中检查唯一性。我不确定你是否正在检查独特的主要postid。我建议你把postid作为主键和&自动递增。您可以匹配帖子标题以进行复制。
$rules = array(
'postid' => 'required|unique:posts'
);
$validator = Validator::make(Input::all(), $rules);
if($validator->fails()){
return Redirect::back()->withInput()->with('errors', $validator->messages());
}else{
$data = array(
'type' => Input::get('type'),
'postid' => Input::get('postid'),
'url' => Input::get('url'),
'author' => Input::get('author'),
'content' => Input::get('content')
);
if(Post::create($data)){
Session::flash('messages', 'Post created.');
return Redirect::route('routename');
}
}