【问题标题】:Laravel how to check validate unique table two fieldLaravel如何检查验证唯一表两个字段
【发布时间】:2017-10-30 01:19:12
【问题描述】:

我有 tableA 有 2 个字段

1. song_id
2. playlist_id

我想检查 laravel validate unique func 示例:我已插入数据

id =>  1
song_id => 2
playlist_id => 34

然后我必须再次插入数据我想检查是否 playlist_id => 34 已插入 song_id = 2 显示消息“已插入”但如果 playlist_id => 34 插入 song_id = 3 允许插入

感谢您的帮助!

【问题讨论】:

  • 听起来您需要song_idplaylist_id 的联合键来防止此表上的重复(我假设这是songs 和@987654330 之间的多对多的枢轴) @)

标签: laravel laravel-5 laravel-5.2 laravel-5.3


【解决方案1】:

这是需要应用的规则。使用示例数据进行测试,它可以按预期工作。

use Illuminate\Validation\Rule;

$playlist_id = request('playlist_id');

$rules = [
    'song_id' => Rule::unique('tableA')->where(function ($query) use ($playlist_id) {
        $query->where('playlist_id', $playlist_id);
    })
];

样本条件

DB data
song_id     playlist_id
2           34
3           34

Request data
song_id     playlist_id     validation
2           34              fail
3           34              fail
4           34              success
2           35              success
3           35              success

示例测试代码

$data = [
    'song_id' => 2,
    'playlist_id' => 34,
];

$playlist_id = $data['playlist_id'];

$validator = \Validator::make($data, [
    'song_id' => Rule::unique('tableA')->where(function ($query) use ($playlist_id) {
        $query->where('playlist_id', $playlist_id);
    })
]);

if ($validator->fails()) {
    // handle failed validation
}

【讨论】:

  • 如何调用规则?
  • 我的意思是导入规则?
  • @BrainMusic 我什至添加了一个示例测试代码来向您展示如何操作。你知道如何使用验证器吗?在您的问题中发布您现有的验证码。如果没有至少发布您的控制器方法,以便我可以向您展示如何操作。
  • 我添加了使用验证器;但我找不到 Class 'App\Http\Controllers\Api\Rule'
  • @BrainMusic 在顶部添加use Illuminate\Validation\Rule;。更新了我的答案以包含它。
猜你喜欢
  • 2023-03-20
  • 2019-07-12
  • 1970-01-01
  • 2019-03-24
  • 2010-12-10
  • 2019-01-04
  • 2021-04-05
  • 1970-01-01
  • 2015-12-07
相关资源
最近更新 更多