我在使用LaravelBook / Ardent时遇到了问题。我的逻辑是使用代码
排除唯一验证中的软删除行public static $rules = array(
'name' => 'required|unique:paper_colors,name,deleted_at,NULL',
'description' => 'required|between:2,255',
'code' => 'required'
);
但是当我运行updateUniques
时,我仍然得到The name has already been taken.
和这个sql:
select count(*) as aggregate from `paper_colors` where `name` = '4/0' and `id` <> '2'
我期待sql将是:
select count(*) as aggregate from `paper_colors` where `name` = '4/0' and `id` <> '2' and `deleted_at` is null
有人可以帮我解决这个问题。我昨晚几乎被困在了这个。仍然无法弄清楚如何处理这个。
答案 0 :(得分:0)
我发现Ardent正在放弃Laravel验证功能:Adding Additional Where Clauses
因此,我克服此错误的解决方案是在LaravelBook\Ardent\Ardent@buildUniqueExclusionRules
下的第799
行添加其他代码,但我没有这样做,因为我将来依赖于他们的任何更新。所以我只创建一个扩展LaravelBook\Ardent\Ardent
并复制buildUniqueExclusionRules
并修改它的类。
if (count($params)>2)
{
$c = count($uniqueRules);
for ($i=1; $i < count($params); $i++, $c++) {
$uniqueRules = array_add($uniqueRules, $c, $params[$i]);
}
}