Laravel - конвертировать значение столбца таблицы в слаг - PullRequest
0 голосов
/ 28 мая 2018

Я хочу преобразовать значение столбца в slug с помощью str_slug для использования в предложении where.Я слышал Mutators & Accessors , также я слышал, что они не могут быть использованы для запроса таблицы.

Здесь преобразовали имя в слаг в блейде, и я хочу соответствоватьname поле для настройки в контроллере

Модель

protected $fillable = ['name', 'price'];

Таблица

| ID | name    | price
| 1  |  ST SD  | 7
| 2  |  CA WA  | 4

Blade

<a href="{{ route('buy', str_slug($item->name)]) }}">Buy Now</a>

Контроллер

public function buy($name){
  $item = Name::where('name' => $name)->first();
  }

Здесь, в контроллере, я хочу преобразовать поле имени в слагчтобы соответствовать вставленному значению $ item-> name в блейде

Ответы [ 3 ]

0 голосов
/ 28 мая 2018

Вот код, который я использую для своих слизней.Просто поместите его в модель и вызовите функцию при создании нового экземпляра модели.

 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();
0 голосов
/ 29 мая 2018

Проверьте код модели моего продукта с помощью метода загрузки.Я реализовал это в моей любимой модели продукта

файл модели избранного продукта электронной коммерции

0 голосов
/ 28 мая 2018

Вы должны добавить уникальный номер рядом с слизнями.

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.');           
}
...