gpt4 book ai didi

mysql - 如何在 Laravel 5.8 中输入相同标题时创建独特的 slug

转载 作者:行者123 更新时间:2023-12-04 07:30:40 26 4
gpt4 key购买 nike

我想为相同的标题创建独特的 slug。
示例 - www.xcv.com/ght-ghy/
示例 1 - www.xcv.com/ght-ghy-1/
这是我的 Controller 代码:

public function addPostDetails(Request $request) {
$postTitle = $request->postTitle;
$postDesc = $request->postDesc;
$postCat = $request->postCat;
$postTags = $request->tagid;
$tags = explode(",", $postTags);
$postglobid = date('y') . date('s') . $postCat . rand(0000, 9999);
$posturl = Str::slug($postTitle, '-');
$galImg = array();
$postimgnm = NULL;

if($postimg = $request->hasFile('postWallImage')) {
$postimg = $request->file('postWallImage');
$postimgnm = $postimg->getClientOriginalName();
$storeTo = public_path() . '/images/' . $postglobid;
File::makeDirectory($storeTo, $mode = 0777, true, true);
$postimg->move($storeTo, $postimgnm);
}

if($postimges = $request->hasFile('postImgGal')) {
$postimges = $request->file('postImgGal');
foreach($postimges as $imgs) {
$postimgnms = $imgs->getClientOriginalName();
$storeTo = public_path() . '/images/' . $postglobid . '/gallery/';
File::makeDirectory($storeTo, $mode = 0777, true, true);
$imgs->move($storeTo, $postimgnms);
array_push($galImg, $postimgnms);
}
}

$savecat = $this->savePostByCategory($postCat, $postglobid, 'createcat');
$savetag = $this->savePostByTag($tags, $postglobid, 'createtag');

$savepost = new Post;
$savepost->post_global_id = $postglobid;
$savepost->post_title = $postTitle;
$savepost->post_desc = $postDesc;
$savepost->post_img = $postimgnm;
$savepost->post_img_gal = json_encode($galImg);
$savepost->post_url = $posturl;

$savepost->save();

return redirect('/seo/viewallpost')->with('postSuccess', 'Blog has been Posted Successfully');
}

最佳答案

您可以使用 cviebrock/eloquent-sluggable图书馆来实现这一目标
https://github.com/cviebrock/eloquent-sluggable
鼻涕虫也往往是独一无二的。因此,如果您写了另一篇具有相同标题的帖子,您会想以某种方式区分它们,通常是在 slug 的末尾添加一个增量计数器:
http://example.com/post/my-dinner-with-andre-francois
http://example.com/post/my-dinner-with-andre-francois-1
http://example.com/post/my-dinner-with-andre-francois-2

$post = Post::create([
'title' => 'My Awesome Blog Post',
]);
// $post->slug is "my-awesome-blog-post"

$newPost = $post->replicate();
// $newPost->slug is "my-awesome-blog-post-1"
为了实现这个只是更新模型
您的模型应该使用 Sluggable trait ,它有一个抽象方法 sluggable()你需要定义。
use Cviebrock\EloquentSluggable\Sluggable;

class Post extends Model
{
use Sluggable;

/**
* Return the sluggable configuration array for this model.
*
* @return array
*/
public function sluggable(): array
{
return [
'slug' => [
'source' => 'title'
]
];
}
}

关于mysql - 如何在 Laravel 5.8 中输入相同标题时创建独特的 slug,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67954849/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com