Livewire验证属性中unique规则失效问题排查
问题分析与解决
你的unique验证规则存在明显语法错误,直接导致了验证失效。
错误原因
Laravel的unique验证规则格式为:unique:表名,要验证的字段名。你当前写的unique:items,id,是在验证id字段的唯一性,系统会把$title的值当作id的查询条件,这就是为什么Telescope里看到的SQL是WHERE id = 'Title 5'——完全偏离了验证title唯一性的需求。
修正代码
把规则里的第二个参数改成title即可:
class ItemEditor extends Component { #[Validate('required|string|min:3|max:255|unique:items,title')] public string $title = ''; }
额外说明(编辑场景)
如果后续需要做编辑功能,要排除当前记录的唯一性验证,可以在规则后添加排除条件:
#[Validate('required|string|min:3|max:255|unique:items,title,' . $this->item->id)] public string $title = '';
(注:需确保组件中已加载要编辑的$item实例)
内容的提问来源于stack exchange,提问作者Petro Gromovo
相关产品推荐
相关产品推荐

