php - Laravel 5 验证唯一传递变量占位符

标签 php validation laravel laravel-5

是否可以通过带有变量的额外 where 子句传递唯一验证方法?

举个例子:

在我的模型中,我有自己的验证规则。

public static $rules = array(
    'amount'    => 'required|numeric',
    'user_id'   => 'required|exists:users,id',
    'cause_id'  => 'required|exists:causes,id',
    'circle_id' => 'required|unique:donations,circle_id,NULL,id,cause_id,:cause_id',
);

然后在我的 Controller 中运行:

$input = array(
    'amount'    => Input::get('amount'),
    'user_id'   => $this->currentUser->id,
    'cause_id'  => $cause->id,
    'circle_id' => Input::get('circle_id')
);

$validator = Validator::make($input, Donation::$rules);

如何在不连接的情况下获取验证规则中的 cause_id?正如您通过规则数组所见,我尝试了 PDO 样式:占位符,但查询执行为: 从 circle_id = '500' 和 cause_id = ':cause_id' 的捐赠中选择 count(*) 作为聚合

最佳答案

我对你的情况的建议是将你的规则包装在一个函数中:

public static function rules($causeId)
{
    return array(
        'amount'    => 'required|numeric',
        'user_id'   => 'required|exists:users,id',
        'cause_id'  => 'required|exists:causes,id',
        'circle_id' => 'required|unique:donations,circle_id,NULL,id,cause_id,' . $causeId,
    );
}

然后调用你的函数,传入你的值:

$validator = Validator::make($input, Donation::rules($yourCauseId));

我过去遇到过这样的问题,我也想在另一个字段的规则中使用其他字段的值。这往往是解决问题的最简单方法。

关于php - Laravel 5 验证唯一传递变量占位符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29696772/

相关文章:

javascript - 无法在nodeJS中调用Socket.on()

php - 如何比较两个日期之间的时间是否在其他两个日期之间?

java - 如何使用注释验证 Struts2 中的 boolean 字段?

php - 如何在 Laravel 中按层次顺序显示一对多关系数据?

php - 在 Laravel 中发布请求 - 错误 - 419 抱歉,您的 session /419 您的页面已过期

laravel - 播种数据透视表的更好方法

php - 显示具有多个需要累加的值的左连接

php - 如何在 Laravel 应用程序之间集成身份验证?

validation - Laravel 5 验证 : Unique-rule to check for emails with exceptions

c# - DataAnnotations 属性是否已缓存?如果是这样,如何在不同文化之间切换?