Laravel Slug 更新记录

Posted

技术标签:

【中文标题】Laravel Slug 更新记录【英文标题】:Laravel Slug Update Record 【发布时间】:2019-03-04 01:39:08 【问题描述】:

如果值没有改变,我想忽略 slug。每当我更新表单时,我都会收到此错误。

这是我的验证请求。

命名空间 App\Http\Requests\Admin;

使用 Illuminate\Foundation\Http\FormRequest;

类 ProductInsertFormRequest 扩展 FormRequest /** * 确定用户是否有权提出此请求。 * * @return 布尔值 */ 公共函数授权() 返回真;

/**
 * Get the validation rules that apply to the request.
 *
 * @return array
 */
public function rules()

    return [
        'title'=>'required',
        'regularPrice'=>'required',
        'slug'=>'required|alpha_dash|min:5|max:255|unique:products,slug',
    ];

【问题讨论】:

您在更新时遇到错误。显示更新帖子的代码。 【参考方案1】:

要在检查唯一性时忽略数据库表中的特定行,您需要使用unique() 规则和ignore() 函数

'slug' => ['required', 'alpha_dash', 'min:5', 'max:255', Rule::unique('products', 'slug')->ignore($this->product->slug)

这将检查 'products' 表的 'slug' 列中的唯一性,但具有 'this slug' 的特定行除外

【讨论】:

导入规则use Illuminate\Validation\Rule; 抱歉有错误ignore($this->product->slug)我更新了答案 应该有一个你要给update()函数更新的对象。我猜对象名称是“产品”,因此对象在$this 范围内。您可以以$this->product->slug 的身份访问该对象和该对象的“slug”(确保将此答案与您的变量名匹配) 这是我更新产品的代码.. public function update(ProductInsertFormRequest $request, $id) $decrypted = Crypt::decrypt($id); $product=Product::whereId($decrypted)->firstOrFail(); $product->title=$request->get('title'); $product->slug=$request->get('slug'); $product->update(); 好的。您正在提供要更新的产品的 $id。因此您需要从数据库中显式获取产品或产品 slug 以检查唯一性。这样做。在rules() 函数中执行此操作。 $slug = Product::whereId(Crypt::decrypt($this->id))->pluck('slug')->first(); 然后在 ignore() 函数中 ignore($slug) 试试看【参考方案2】:
    Rule 中的 Ignore() 函数仅适用于 id。

    所以我把代码改成如下:

    public function rules()
    
    $decrypted = Crypt::decrypt($this->id);
    //$slug = Product::whereId($decrypted)->pluck('slug')->first();
    
    //return dd($slug);
     return [
        'title'=>'required',
        'regularPrice'=>'required',
        'slug' => ['required', 'alpha_dash', 'min:5', 'max:255', Rule::unique('products', 'slug')->ignore($decrypted)]
    ];
     
    

【讨论】:

以上是关于Laravel Slug 更新记录的主要内容,如果未能解决你的问题,请参考以下文章

如何在没有 Laravel 尝试将其保存到数据库的情况下在 Eloquent 模型中使用受保护的属性

Laravel 4 重定向 Slug

Laravel文档阅读笔记-Laravel Str slug() Function Example

Laravel文档阅读笔记-Laravel Str slug() Function Example

分类 slug + post slug Laravel Eloquent

从 Laravel 中的 url 获取最新的 slug