2016-05-06 90 views
2

我正在設計一個涉及檢查促銷代碼的應用程序。我已經研究過(谷歌),但是我找不到可以解釋類似問題的解決方案的資源,或可以轉換爲此類問題的資源。Laravel 5自定義驗證 - 自定義MySQL查詢

表:用戶

ID,姓名,電子郵件等

表:代碼(獲獎代碼)

標識,代碼,價值

表:個SubmittedCodes(由用戶提交的代碼)

標識,USER_ID,代碼,時間戳

用戶將檢查那裏的代碼,他提出任何價值,並提交代碼會被記住,如果特定的用戶希望提交太多的代碼。 驗證將被退回查看。保存在SubmittedCodes表中。

我想問你,我的方法是否正確?我應該使用自定義驗證嗎?我應該建立自定義幫手嗎?也許一些特定的MySQL查詢?

我不想讓任何人爲我編碼,只需要在正確的方向上微調。我想我知道如何使用搜索引擎,但我可能錯過了一些。

我已經完成了關於自定義驗證的簡單教程,但是這一個有其他目標,我無法採用它來滿足我的要求。

目前我已經構建了帶有消息和管理員的登錄/用戶管理系統,但是這個部分/模塊有點困難。

資源鏈接我所提到的: https://laravel.com/docs/5.2/validation#custom-validation-rules https://scotch.io/tutorials/laravel-form-validation

回答

0

我不能讓你的問題的完整意義上的,而是從我收集(並請糾正我,如果我錯了)你想用戶提交代碼,如果它與代碼表中的代碼相匹配,然後將其存儲在提交的代碼表中,對嗎?

你可以使用在這種情況下exists規則,因爲你正在檢查如果在代碼表中存在的代碼。

因此,在你驗證了您的表單提交,你會添加規則是這樣的:

'user_submitted_code' => 'exists:codes,code' 

您也可以簡寫,如果字段名在你的數據庫匹配的列名

希望有所幫助!如果我沒有解決您的問題,請留下評論。

0

如@haakym所述,您可以使用exists規則來驗證代碼是否確實存在。

$this->validate($request, [ 
    'user_submitted_code' => 'exists:codes,code' 
]); 

一旦完成,您想檢查該代碼是否已被特定用戶使用。

$check = SubmittedCodes::where(
    ['user_id', $user_id], 
    ['code', $user_submitted_code] 
)->exists();