【问题标题】:Is there any way to validate a foreign key using Laravel's Validation syntax?有没有办法使用 Laravel 的验证语法来验证外键?
【发布时间】:2015-06-19 03:30:24
【问题描述】:

假设我有一个与mission 相关的object。用户可以上传对象并说它与这些任务之一有关。有没有办法使用 Laravel 的 Validation 类和规则来检查用户为此对象选择的 mission_id 是否确实存在于这个数据库中?

这样,我可以检查mission_id不仅是一个整数,而且存在于数据库中。

例如,我想我正在寻找类似的东西:

$rules = array(
    'mission_id' => 'foreignKeyExistsInMissions|integer'
)

foreignKeyExistsInMissions 是我正在寻找的验证规则。

【问题讨论】:

    标签: php validation laravel


    【解决方案1】:
    <?php
    
    namespace App\Http\Requests\Leave\LeaveAssigns;
    
    use Illuminate\Foundation\Http\FormRequest;
    use Illuminate\Validation\Rule;
    
    class StoreLeaveAssignRequest extends FormRequest
    {
        /**
         * Determine if the user is authorized to make this request.
         *
         * @return bool
         */
        public function authorize()
        {
            return true;
        }
    
        /**
         * Get the validation rules that apply to the request.
         *
         * @return array
         */
        public function rules()
        {
            return [
                'role_id' => ['required', Rule::exists('roles', 'id')]
            ];
        }
    }
    
    

    【讨论】:

      【解决方案2】:

      这应该可行:

      'mission_id' => 'required|exists:missions,id',
      

      还有消息:

      'mission_id.exists' => 'Not an existing ID',
      

      Source(v4.2 文档)

      Source(v5.5 文档)

      Source(v7.x 文档)

      Source(v8.x 文档)

      【讨论】:

      • 不太确定您是如何进行验证的,但this 会检查自定义错误消息(与上面的链接到文档页面相同,但稍远一点)
      • 在 5.5 中工作,但似乎没有记录。
      • 但如果与另一个数据库有关系,我的 laravel 将无法找出这个关系在哪里
      【解决方案3】:

      'mission_id' =&gt; 'required|exists:missions,id', missions 是表名,id 是任务表上引用的列名 ''mission_id' =&gt; 'required|exists:table_name,referenced_column',

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-11-20
        • 1970-01-01
        • 1970-01-01
        • 2017-10-26
        • 1970-01-01
        • 1970-01-01
        • 2011-08-22
        • 1970-01-01
        相关资源
        最近更新 更多