首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何使用Rule:unique与laravel中的另一列的值数组进行比较?

在Laravel中,可以使用Rule:unique验证规则来验证数据库表中的唯一性。该规则可以用于验证某个字段的值是否在数据库表中唯一。

如果要与另一列的值数组进行比较,可以使用自定义验证规则来实现。首先,需要创建一个自定义验证规则类,例如UniqueWithAnotherColumnRule。在该类中,可以定义一个passes方法来执行验证逻辑。

代码语言:txt
复制
namespace App\Rules;

use Illuminate\Contracts\Validation\Rule;
use Illuminate\Support\Facades\DB;

class UniqueWithAnotherColumnRule implements Rule
{
    protected $table;
    protected $column;

    public function __construct($table, $column)
    {
        $this->table = $table;
        $this->column = $column;
    }

    public function passes($attribute, $value)
    {
        $count = DB::table($this->table)
            ->where($attribute, $value)
            ->whereIn($this->column, request()->input($this->column))
            ->count();

        return $count === 0;
    }

    public function message()
    {
        return 'The :attribute has already been taken with another column.';
    }
}

接下来,在需要进行验证的地方,可以使用该自定义验证规则。例如,在表单请求类中的rules方法中使用该规则:

代码语言:txt
复制
use App\Rules\UniqueWithAnotherColumnRule;

public function rules()
{
    return [
        'column1' => ['required', new UniqueWithAnotherColumnRule('table_name', 'column2')],
    ];
}

在上述代码中,'column1'是要验证的字段,'table_name'是要验证的数据库表名,'column2'是要与之比较的另一列的字段名。

这样,当进行表单验证时,Rule:unique与另一列的值数组进行比较的自定义验证规则就会生效。如果验证失败,将返回自定义验证规则中定义的错误消息。

关于腾讯云相关产品和产品介绍链接地址,由于要求不能提及具体的云计算品牌商,建议您参考腾讯云官方文档或咨询腾讯云的客服人员获取相关信息。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

如何对矩阵所有进行比较

如何对矩阵所有进行比较? (一) 分析需求 需求相对比较明确,就是在矩阵显示,需要进行整体比较,而不是单个字段直接进行比较。如图1所示,确认矩阵中最大或者最小。 ?...只需要在计算比较时候对维度进行忽略即可。如果所有字段在单一表格,那相对比较好办,只需要在计算金额时候忽略表维度即可。 ? 如果维度在不同表,那建议构建一个有维度组成表并进行计算。...可以通过summarize构建维度表并使用addcolumns增加计算,达到同样效果。之后就比较简单了,直接忽略维度计算最大和最小再和当前进行比较。...当然这里还会有一个问题,和之前文章类似,如果同时具备这两个维度外部筛选条件,那这样做的话也会出错,如图3所示,因为筛选后把最大或者最小给筛选掉了,因为我们要显示是矩阵进行比较,如果通过外部筛选后...,矩阵会变化,所以这时使用AllSelect会更合适。

7.7K20

Laravel Validation 表单验证(二、验证表单请求)

他们会自动被 Laravel 提供 [服务容器] 自动解析。 所以,验证规则是如何运行呢?你所需要做就是在控制器方法类型提示传入请求。...日期将传递到 PHP 函数 strtotime : 'start_date' => 'required|date|after:tomorrow' 您可以指定另一个要与日期进行比较字段,而不是传递要由...这个日期将传递到 PHP strtotime 函数。此外, [after]规则一样,另一个正在验证字段可以作为 date 。...Laravel 将自动从模型实例获取主键值: Rule::unique('users')->ignore($user) 如果您数据表使用主键名称不是 id ,那就在调用 ignore 方法时指定字段名称...: Rule::unique('users')->ignore($user->id, 'user_id') 默认情况下, unique 规则将检查要验证字段名称相匹配唯一性。

29.2K10
  • 如何使用Excel将某几列有标题显示到新

    如果我们有好几列有内容,而我们希望在新中将有内容标题显示出来,那么我们怎么做呢? Excel - TEXTJOIN function 1....- - - - 4 - - - 在开始,我们曾经使用INDEX + MATCH方式,但是没有成功,一直是N/A https://superuser.com/questions/1300246/if-cell-contains-value-then-column-header...所以我们后来改为TEXTJOIN函数,他可以显示,也可以显示标题,还可以多个列有时候同时显示。...- - 4 - - - 15 Year 5 - - - - 5 - - - =TEXTJOIN(", ",TRUE,IF(ISNUMBER(B2:I2),$B$1:$I$1,"")) 如果是想要显示,...则: =TEXTJOIN(", ",TRUE,IF(ISNUMBER(B2:I2),B2:I2,"")) 其中,ISNUMBER(B2:I2)是判断是不是数字,可以根据情况改成是不是空白ISBLANK

    11.3K40

    在PHP中使用SPL库对象方法进行XML数组转换

    在PHP中使用SPL库对象方法进行XML数组转换 虽说现在很多服务提供商都会提供 JSON 接口供我们使用,但是,还是有不少服务依然必须使用 XML 作为接口格式,这就需要我们来对 XML...今天,我们介绍使用 SPL 扩展库一些对象方法来处理 XML 数据格式转换。首先,我们定义一个类,就相当于封装一个操作 XML 数据转换类,方便我们将来使用。...在 phpToXml() 代码,我们还使用了 get_object_vars() 函数。就是当传递进来数组项内容是对象时,通过这个函数可以获取对象所有属性。...如果将对象看做是一个数组的话,每个属性就是它键值对。 在对每个键值遍历时,我们判断当前键对应内容是否是数组或者是对象。如果不是这两种形式内容的话,就直接将当前内容添加为当前结点子结点。...测试代码: https://github.com/zhangyue0503/dev-blog/blob/master/php/202009/source/在PHP中使用SPL库对象方法进行XML数组转换

    6K10

    laravel 数据验证规则详解

    :date' = '等于', 'date_format:format' = 'date和date_format不应该同时使用,按指定时间格式传', 'different:field' = '验证字段必须字段...,bmp,gif,svg', 'in:foo,bar,...' = '验证字段必须包含在给定列表', 'in_array:anotherfield' = '验证字段必须存在于另一个字段...,但可以为空', 'regex:pattern' = '验证字段必须给定正则表达式匹配', 'required' = '验证字段必须存在于输入数据,但不可以为空', //以下情况视为空:1....', 'size:value' = '验证字段必须具有给定匹配大小,对字符串,value对应字符数;对数字,对应给定 整数值;对数组,对应count;对文件,是文件大小(kb)', 'timezone...MIME类型 'toppings' = [ 'required', Rule::notIn(['sprinkles','cherries']), ], //当使用regex时,必须使用数组,而不是|分隔符

    2.9K31

    Laravel创建数据库表结构例子

    Laravel Schema门面提供了数据库系统无关创建和操纵表支持,在 Laravel 所支持所有数据库系统中提供一致、优雅、平滑API。...nullable(); }); 下面是所有可用修改器列表,该列表不包含索引修改器: 修改器 描述 - after('column') 将该置于另一之后 (仅适用于MySQL) - comment...('my comment') 添加注释信息 - default($value) 指定默认 - first() 将该置为表第一个 (仅适用于MySQL) - nullable() 允许该为...此外,SQLite数据库暂不支持在单个迁移删除或修改多个。 7、索引 创建索引 schema构建器支持多种类型索引,首先,让我们看一个指定为唯一索引例子。...要创建索引,可以使用unique方法: $table- string('email')- unique(); 此外,你可以在定义之后创建索引,例如: $table- unique('email');

    5.6K21

    Laravel Validator 实现两个或多个字段联合索引唯一

    LaravelValidation还是蛮好用使用Validator可以非常方便验证表单,它提供了unique唯一性验证,但是默认只能验证一个字段,那遇到两个甚至多个字段联合索引,需要满足复杂条件唯一性怎么实现呢...Validator复杂唯一性实现方法 我们可以用自定义 Rule 自定义验证规则,比如像这样: [...]...= $request- phone ]; $this- validate($request, [ "phone" = [ "required", Rule...::unique('table_name') - where(function ($query) use ($where) { return $query...首先我们把原来字符串形式,改成数组形式,在数组中用 Rule 去自定义新规则,很显然 unique() 方法是对 unique 来自定义,然后参数是表名字,后面再跟一个 where 函数,用到了闭包

    1.3K10

    Laravel5.7 数据库操作迁移实现方法

    Laravel Schema 门面提供了数据库系统无关创建和操纵表支持,在 Laravel 所支持所有数据库系统中提供一致、优雅、流式 API。...table- increments('id'); }); 当然,创建新表时候,可以使用 Schema 构建器任意方法来定义数据表。...– default($value) 指定默认 – first() 将该置为表第一个 (MySQL) – nullable($value = true) 允许该为 NULL – storedAs...要创建该索引,可以使用 unique 方法: $table- string('email')- unique(); 此外,你可以在定义之后创建索引,例如: $table- unique('email'...(‘geo_location_spatialindex’); 从 “geo” 表删除空间索引(不支持SQLite) 如果要传递数据数组到删除索引方法,那么相应索引名称将会通过数据表名、和键类型来自动生成

    3.8K31

    Laravel 参数验证

    1 通过extend方法扩展 //这是一个简单参数比较验证规则,Laravel5.8提供,Laravel5.5未提供 //验证规则如下: 'max_num'=>'gte:min', Validator...从而导致在当前扩展验证规则,只能过获取到需要验证数据,而获取不到其他字段数据,无法进行联合字段验证。像上面比较两个字段大小验证规则就无法实现。...例如,一个验证规则如下,表示用当期类validateMinNum对参数进行验证,那么,这样一个功能,如何Laravel实现呢。...extend方式对验证器影响是全局,整个运行进程有效。可以获取到验证器本身,因此可以做多个字段关系验证;另一种是通过自定义规则类实现。自定义规则了只对使用自定义规则类验证有效。...Laravel本身提供了ClosureValidationRule验证规则用于处理回调函数验证规则。同时也可以使用extend方式进行回调函数验证。

    3.4K00

    关于Laravel参数验证一些疑

    1 通过extend方法扩展 //这是一个简单参数比较验证规则,Laravel5.8提供,Laravel5.5未提供 //验证规则如下: 'max_num'= 'gte:min', Validator...从而导致在当前扩展验证规则,只能过获取到需要验证数据,而获取不到其他字段数据,无法进行联合字段验证。像上面比较两个字段大小验证规则就无法实现。...例如,一个验证规则如下,表示用当期类validateMinNum对参数进行验证,那么,这样一个功能,如何Laravel实现呢。...extend方式对验证器影响是全局,整个运行进程有效。可以获取到验证器本身,因此可以做多个字段关系验证;另一种是通过自定义规则类实现。自定义规则了只对使用自定义规则类验证有效。...Laravel本身提供了ClosureValidationRule验证规则用于处理回调函数验证规则。同时也可以使用extend方式进行回调函数验证。

    6.6K31

    WPF备忘录(3)如何从 Datagrid 获得单元格内容 使用转换器进行绑定数据转换IValueConverter

    一、如何从 Datagrid 获得单元格内容    DataGrid 属于一种 ItemsControl, 因此,它有 Items 属性并且用ItemContainer 封装它 items. ...但是,WPFDataGrid 不同于Windows Forms DataGridView。 ...在DataGridItems集合,DataGridRow 是一个Item,但是,它里面的单元格却是被封装在 DataGridCellsPresenter 容器;因此,我们不能使用 像DataGridView.Rows.Cells...child == null) child = GetVisualChild(v); else break; } return child; }  二、WPF 使用转换器进行绑定数据转换...IValueConverter  有的时候,我们想让绑定数据以其他格式显示出来,或者转换成其他类型,我们可以 使用转换器来实现.比如我数据中保存了一个文件路径”c:\abc\abc.exe”

    5.5K70

    约束

    一:类型 约束类型一共分三种 域约束:      涉及一个或多个,(限制某一数据大于0) 实体约束:     相同不能存在于其他 引用完整性约束:  一个表一个某个表另一匹配...约束 unique约束主键约束类似,同样也是要求指定列有唯一 但是一个表可以有多个unique约束,同时这个允许存在null。...   ak_employeeSSN unique(ssn) 六:check约束 check不局限于一个特定,可以约束一个,也可以通过某个来约束另一 定义check约束使用规则where...默认只在insert语句中使用 如果插入记录给出了这个,那么该数据就是插入数据 如果没有给出,那么该数据总是默认 八:禁用约束 在创建约束之前,数据库已经有一些不符合规矩数据存在...as  @salary >0; sp_bindrule  'SalaryRule' ,  'Employee.Salary' 第一句定义了一个规则叫SalaryRule 进行比较事物是一个变量 这个变量是所检查

    81810

    面试题(三)

    返回类型声明:增加了对返回类型声明支持。类似于参数类型声明,返回类型声明指明了函数返回类型。可用类型参数声明可用类型相同。...NULL 合并运算符:由于日常使用存在大量同时使用三元表达式和 isset()情况,NULL 合并运算符使得变量存在且不为NULL, 它就会返回自身,否则返回它第二个操作数。...- 以升序对数组排序 rsort() - 以降序对数组排序 asort() - 根据,以升序对关联数组进行排序 ksort() - 根据键,以升序对关联数组进行排序 arsort() - 根据,以降序对关联数组进行排序...有两点一定要记住: 对用户会话采用适当安全措施,例如:给每一个会话更新id和用户使用SSL。生成另一个一次性令牌并将其嵌入表单,保存在会话(一个会话变量),在提交时检查它。...如laravel _token 代码注入:代码注入是利用计算机漏洞通过处理无效数据造成。问题出在,当你不小心执行任意代码,通常通过文件包含。写得很糟糕代码可以允许一个远程文件包含并执行。

    2.4K10

    面试题(四)

    返回类型声明:增加了对返回类型声明支持。类似于参数类型声明,返回类型声明指明了函数返回类型。可用类型参数声明可用类型相同。...NULL 合并运算符:由于日常使用存在大量同时使用三元表达式和 isset()情况,NULL 合并运算符使得变量存在且不为NULL, 它就会返回自身,否则返回它第二个操作数。...- 以升序对数组排序 rsort() - 以降序对数组排序 asort() - 根据,以升序对关联数组进行排序 ksort() - 根据键,以升序对关联数组进行排序 arsort() - 根据,以降序对关联数组进行排序...有两点一定要记住: 对用户会话采用适当安全措施,例如:给每一个会话更新id和用户使用SSL。生成另一个一次性令牌并将其嵌入表单,保存在会话(一个会话变量),在提交时检查它。...如laravel _token 代码注入:代码注入是利用计算机漏洞通过处理无效数据造成。问题出在,当你不小心执行任意代码,通常通过文件包含。写得很糟糕代码可以允许一个远程文件包含并执行。

    2.3K20

    Laravel 表单 size 验证数字

    要验证一个数字的确定,看了表单验证文档 size:value验证字段必须具有给定匹配大小。对于字符串来说,value 对应于字符数。对于数字来说,value 对应于给定整数值。...对于数组来说, size 对应数组 count 。对文件来说,size 对应是文件大小(单位 kb )。...($attribute, $rule); Laravel 前面这些是过滤,验证文件上传 Laravel 这里动态拼接了一个方法,通过打印得知是validateSize Laravel 然后在这个类用...trait 中找到这个方法ValidatesAttributes::validateSize Laravel 其实这里已经可以看到验证$hasNumeric Laravel $hasNumeric里放是这个...Laravel 再看一下他是如何验证 Laravel Laravel 如果没有numeric或者integer会返回 null,就会导致$hasNumeric等于 false Laravel

    16010
    领券