我想将列值转换为带有 str_slug
的slug,以便在where子句中使用。我听说 Mutators & 访问者,我也听说他们不能用来查询表。
此处已将名称转换为slug中的slug,我想将 name
字段与控制器中的slug匹配
模型
protected $fillable = ['name', 'price'];
表格
| ID | name | price
| 1 | ST SD | 7
| 2 | CA WA | 4
刀片
<a href="{{ route('buy', str_slug($item->name)]) }}">Buy Now</a>
控制器
public function buy($name){
$item = Name::where('name' => $name)->first();
}
在控制器中,我想将名称字段转换为slug以匹配$ item-&gt;名称在刀片中的标记值
答案 0 :(得分:0)
您必须在slugs旁边添加一个唯一的数字。
public function createSlug($title)
{
// Normalize the title
$slug = str_slug($title);
if (Name::where('name' => $slug)->count() <= 0){
return $slug;
}
$i =1;
while (Name::where('name' => $slug)->count() > 0) {
$slug = $slug.'-'.$i;
if (Name::where('name' => $slug)->count() <= 0) {
return $slug;
}
$i++;
}
throw new \Exception('Can not create a unique slug.');
}
答案 1 :(得分:0)
这是我用于我的slugs的代码。只需将其放在模型中,并在创建模型的新实例时调用该函数。
public static function generateUniqueSlug($value){
$temp = str_slug($value, '-');
if(!Deck::all()->where('slug',$temp)->isEmpty()){
$i = 1;
$newslug = $temp . '-' . $i;
while(!Deck::all()->where('slug',$newslug)->isEmpty()){
$i++;
$newslug = $temp . '-' . $i;
}
$temp = $newslug;
}
return $temp;
}
就这样使用它:
$p = new Post();
$p->title = $request->title;
$p->slug = $p->genereateUniqueSlug($request->title);
$p->save();
答案 2 :(得分:0)
使用启动方法检查我的产品型号代码。我已经在我的有用产品模型上实现了它