【问题标题】:Laravel - Convert table column value to slugLaravel - 将表列值转换为 slug
【发布时间】:2018-11-06 17:15:29
【问题描述】:

我想用 str_slug 将列值转换为 slug 以在 where 子句中使用。我听说过Mutators & Accessors,也听说不能用来查询表。

此处已将名称转换为刀片中的 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();
  }

在控制器中,我想将 name 字段转换为 slug 以匹配刀片中 $item->name 的 slugged 值

【问题讨论】:

  • 在表格中添加一个 slug 列这样您就可以Name::where('slug' =&gt; $slug)-&gt;first(); 会不会更容易。我准备好了一个函数,它为模型创建 slug 并检查它是否唯一以将增量添加到字符串的末尾
  • 同意@Taacoo,你必须为slug创建一个单独的列,你可以根据需要添加唯一的约束。然后您可以使用 Sahil Gupta 答案生成独特的 slug。
  • 您能否就答案提供反馈?

标签: php laravel eloquent slug accessor


【解决方案1】:

您必须在蛞蝓旁边添加一个唯一编号。

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

【讨论】:

    【解决方案2】:

    这是我用于我的蛞蝓的代码。只需将它放在您的模型中,并在您创建模型的新实例时调用该函数。

     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();
    

    【讨论】:

      【解决方案3】:

      使用引导方法检查我的产品型号代码。我已经在我喜欢的产品模型上实现了它

      avored ecommerce product model file

      【讨论】:

        猜你喜欢
        • 2021-10-09
        • 1970-01-01
        • 1970-01-01
        • 2015-06-08
        • 1970-01-01
        • 2011-05-30
        • 2022-08-17
        • 2017-03-31
        • 2014-03-25
        相关资源
        最近更新 更多