laravel验证外键个数不大于另一个表的id
Posted
技术标签:
【中文标题】laravel验证外键个数不大于另一个表的id【英文标题】:laravel validation the number of forging key not greater than the id of anther table 【发布时间】:2018-07-06 14:29:22 【问题描述】:我正在使用laravel
和laravel validation
是我用过的最好的验证,但现在我在花药表中有foreign
键的表,像这样
ADD CONSTRAINT `items_item_color_foreign` FOREIGN KEY (`item_color`) REFERENCES `colors` (`id`),
ADD CONSTRAINT `items_item_default_unit_foreign` FOREIGN KEY (`item_default_unit`) REFERENCES `units` (`id`),
ADD CONSTRAINT `items_item_inserter_foreign` FOREIGN KEY (`item_inserter`) REFERENCES `users` (`id`),
ADD CONSTRAINT `items_item_state_foreign` FOREIGN KEY (`item_state`) REFERENCES `item_states` (`id`);
现在在请求验证中我写了这个
'item_id' => 'required|unique:items|max:250|min:1',
'item_desc_ar' => 'required|unique:items|max:250|min:1',
'item_desc_en' => 'max:250|min:1|nullable',
'item_default_unit' => 'required|integer',
现在在item_defult_unit
中,它是必需的整数,但在后期它可能比 item_units 中的 id 多
我怎样才能让这样的验证
'item_default_unit' => 'required|integer|and not more than id in anther table',
谢谢,
【问题讨论】:
您可以简单地在您的情况下附加max
验证,您需要添加类似 max:$valueFromOtherTable
的内容,您可以在其中编写雄辩的查询以获取 $valueFromOtherTable
你能写出完整的例子吗
是的,写答案,另一张桌子的名字是什么?
表名是单位
如果解决方案有效,只需将答案标记为已接受
【参考方案1】:
您需要附加max
验证,动态值如下:
'item_default_unit' => 'required|integer|max:'.Unit::max('id')
//model name is Unit
它的简单技巧是通过从模型中获取max
的动态值。
【讨论】:
【参考方案2】:你可以的
$unit = DB::table('units')->latest()->first();
'item_default_unit' => 'required|integer|max:'.$unit->id
【讨论】:
以上是关于laravel验证外键个数不大于另一个表的id的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 laravel 8 验证来自另一个(买家)表的数据(请求中)