Php 在Laravel中创建时向post slug追加$id
我正在使用Laravel从表单创建一篇博客文章,并将标题和正文传递到Php 在Laravel中创建时向post slug追加$id,php,laravel,slug,laravel-5.6,Php,Laravel,Slug,Laravel 5.6,我正在使用Laravel从表单创建一篇博客文章,并将标题和正文传递到PostsController中的create方法 slug必须是唯一的,所以尽管下面的方法有效,但当我使用重复的标题时,它失败了 我打算在slug中添加$post->id,因此这是帖子标题将变成这是帖子标题-12 <?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Post; use Session; use Carbo
PostsController
中的create
方法
slug必须是唯一的,所以尽管下面的方法有效,但当我使用重复的标题时,它失败了
我打算在slug中添加$post->id
,因此这是帖子标题
将变成这是帖子标题-12
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Post;
use Session;
use Carbon\Carbon;
class PostController extends Controller
{
public function store(Request $request) {
$this->validate($request, [
'title' => 'required|max:255',
'body' => 'required'
]);
$post = new Post;
$post->title = $request->input('title');
$post->body = $request->input('body');
$post->slug = str_slug($request->input('title'), '-');
$post->save();
Session::flash('success', 'The blog post was successfully saved!');
return redirect()->route('posts.show', $post->id);
}
先保存后更新:
$post = \DB::transaction(function() use($request) {
$post = new Post;
$post->title = $request->input('title');
$post->body = $request->input('body');
$post->slug = uniqid(); //to avoid unique column conflict, it will be overwritten
$post->save();
$post->slug = str_slug($request->input('title').' '.$post->id, '-');
$post->save();
return $post;
});
先保存后更新:
$post = \DB::transaction(function() use($request) {
$post = new Post;
$post->title = $request->input('title');
$post->body = $request->input('body');
$post->slug = uniqid(); //to avoid unique column conflict, it will be overwritten
$post->save();
$post->slug = str_slug($request->input('title').' '.$post->id, '-');
$post->save();
return $post;
});
如果slug列具有唯一的约束,则必须小心将其作为'anything'
输入。除此之外,这应该有用。太好了,谢谢。我本来是这样做的,但失败了。我现在意识到我使用了“testpost”作为标题,但它失败了,因为我在数据库中已经有了一个testpost
slug。截断表后,这意味着我将无法将“test post”作为slug,因为它将自动附加id。返回到上面的答案,如果我将一篇文章标题为“post 2”,并且已经有一篇文章带有slugpost-2
非常感谢,如果slug列具有唯一的约束,你必须小心你作为“任何东西”输入的内容。除此之外,这应该有用。太好了,谢谢。我本来是这样做的,但失败了。我现在意识到我使用了“testpost”作为标题,但它失败了,因为我在数据库中已经有了一个testpost
slug。截断表后,这意味着我将无法将“test post”作为slug,因为它将自动附加id。返回到上面的答案,如果我将一篇文章标题为“post 2”,并且已经有一篇文章带有slugpost-2
非常感谢