2017-05-29 69 views
1

我有表A,有2場Laravel如何檢查驗證獨特的表兩場

1. song_id 
2. playlist_id 

我要檢查laravel驗證獨特FUNC 例子:我在插入數據

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

然後我要再次插入數據我想檢查一下,如果 playlist_id => 34已經插入song_id = 2顯示消息「已經插入」,但是如果playlist_id => 34插入song_id = 3允許插入

感謝您的幫助!

+0

聽起來像是你需要song_id'的'聯合鍵和'playlist_id',以防止在該表副本(我假設是'歌曲'和'播放列表'之間多對多的關鍵) –

回答

2

這是需要應用的規則。使用樣本數據進行測試,並按需要運行。

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 
} 
+0

如何調用規則? –

+0

我的意思是導入規則? –

+0

@BrainMusic我甚至還添加了一個示例測試代碼來向你展示如何。你知道如何使用驗證器嗎?在您的問題中發佈您現有的驗證碼。如果不是最低限度發佈您的控制器方法,以便我可以告訴你如何。 – Sandeesh