为了账号安全,请及时绑定邮箱和手机立即绑定

Laravel 验证在两列上是唯一的

Laravel 验证在两列上是唯一的

PHP
元芳怎么了 2022-07-09 09:41:20
下面是我的表的结构:公司IDuuid公司名称公司分支机构IDcorp_id分店名称这种关系被定义为每个公司可以有许多 corp_branches 但我想检查每个公司下的 branch_name 是否应该是唯一的。不同公司下的两个不同分支机构可以同名,但一个公司下的两个分支机构不能同名。我试过这个'branch_name' => 'required|string|max:100|unique:corp_branches,branch_name,NULL,id,corp_id,'.$this->get('corp_id'),
查看完整描述

2 回答

?
犯罪嫌疑人X

TA贡献2080条经验 获得超4个赞

'branch_name' =>['required', 'unique:corp_branches,corp_id,'.$this->id.',NULL,corp_id,branch_name,'.$request->input('branch_name')]



查看完整回答
反对 回复 2022-07-09
?
慕虎7371278

TA贡献1802条经验 获得超4个赞

    您需要自定义验证规则。


步骤 #1 - 生成规则

php artisan make:rule UniqueBranch

步骤 #2 - 修改app/Rules/UniqueBranch.php

<?php


namespace App\Rules;


use Illuminate\Contracts\Validation\Rule;


class UniqueBranch implements Rule

{

    protected $corp_id;


    /**

     * Create a new rule instance.

     *

     * @return void

     */

    public function __construct($corp_id)

    {

        $this->corp_id = $corp_id;

    }


    /**

     * Determine if the validation rule passes.

     *

     * @param  string  $attribute

     * @param  mixed  $value

     * @return bool

     */

    public function passes($attribute, $value)

    {

        // Assume your model name is `Corporation`

        $corporation = Corporation::find($this->corp_id);


        if ($corporation) {

            $exists = $corporation

                ->corp_branches() // assume you have relation to braches

                ->where('name', $value)

                ->count();


            if (!$exists) {

                return true;

            }

        }


        return false;

    }


    /**

     * Get the validation error message.

     *

     * @return string

     */

    public function message()

    {

        return 'The branch name has already been taken.';

    }

}

步骤 #3 - 使用UniqueBranch

'branch_name' => [

    'required',

    'string',

    'max:100',

    new UniqueBranch($this->get('corp_id'))

]


查看完整回答
反对 回复 2022-07-09
  • 2 回答
  • 0 关注
  • 126 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号