0

我在使用 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

有人可以帮我解决这个问题。我昨晚几乎被困在这上面。仍然无法弄清楚如何处理这个问题。

4

1 回答 1

0

我发现 Ardent 正在放弃 Laravel 验证功能:添加额外的 Where 子句

所以我克服这个错误的解决方案是在LaravelBook\Ardent\Ardent@buildUniqueExclusionRulesat line:下添加额外的代码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]);
    }
}
于 2014-01-28T01:32:29.600 回答