无法在Ardent Model中添加其他查询

时间:2014-01-28 00:47:31

标签: laravel eloquent ardent

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

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

1 个答案:

答案 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]);
    }
}