有没有办法使用 Laravel 的验证语法来验证外键?
Posted
技术标签:
【中文标题】有没有办法使用 Laravel 的验证语法来验证外键?【英文标题】:Is there any way to validate a foreign key using Laravel's Validation syntax? 【发布时间】:2015-06-19 03:30:24 【问题描述】:假设我有一个与mission
相关的object
。用户可以上传对象并说它与这些任务之一有关。有没有办法使用 Laravel 的 Validation
类和规则来检查用户为此对象选择的 mission_id
是否确实存在于这个数据库中?
这样,我可以检查mission_id
不仅是一个整数,而且存在于数据库中。
例如,我想我正在寻找类似的东西:
$rules = array(
'mission_id' => 'foreignKeyExistsInMissions|integer'
)
foreignKeyExistsInMissions
是我正在寻找的验证规则。
【问题讨论】:
【参考方案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' => 'required|exists:missions,id',
missions 是表名,id 是任务表上引用的列名
''mission_id' => 'required|exists:table_name,referenced_column',
【讨论】:
以上是关于有没有办法使用 Laravel 的验证语法来验证外键?的主要内容,如果未能解决你的问题,请参考以下文章
有没有办法在 laravel 的不同数据库中对用户进行身份验证?