【问题标题】:laravel validation the number of forging key not greater than the id of anther tablelaravel验证外键个数不大于另一个表的id
【发布时间】: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
  • 你能写出完整的例子吗
  • 是的,写答案,另一张桌子的名字是什么?
  • 表名是单位
  • 如果解决方案有效,只需将答案标记为已接受

标签: php mysql laravel validation


【解决方案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
    

    【讨论】:

      猜你喜欢
      • 2015-11-09
      • 2020-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-26
      • 1970-01-01
      • 2016-06-12
      • 1970-01-01
      相关资源
      最近更新 更多