Я хочу преобразовать значение столбца в слаг str_slug
использовать в пункте, где. я слышал Мутаторы & Accessors, также я слышал, что они не могут быть использованы для запроса таблицы.
Здесь преобразовали имя в слизняк в клинке, и я хочу соответствовать name
поле, чтобы убить в контроллере
модель
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, чтобы соответствовать значению slugged $ item-> name в blade-сервере.
Вы должны добавить уникальный номер рядом с слизнями.
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.');
}
Вот код, который я использую для своих слизней. Просто поместите его в вашу модель и вызовите функцию, когда вы создаете новый экземпляр модели.
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();
Проверьте код модели моего продукта с помощью метода загрузки. Я реализовал это на моей любимой модели продукта