อีเมลที่ไม่ซ้ำใครใน DB ต่อลูกค้า

ฉันใช้ laravel 5.4 กับ couchbase กับ php 7.1

ในระบบของเรา เราสามารถสร้างผู้ใช้ใหม่ได้ จนถึงขณะนี้ ฟิลด์อีเมลจะต้องไม่ซ้ำกับตารางผู้ใช้ฐานข้อมูล ไม่มีปัญหา เราใช้สิ่งนี้ในคำขอของเรา

'email'        => 'required|email|unique:users,email,NULL,user_id,datetime_deleted,NULL',

มันทำงานได้ดี ตอนนี้ เรามีคำขอใหม่ในแอปพลิเคชันของเราว่าอีเมลของผู้ใช้จะต้องไม่ซ้ำกับตารางผู้ใช้ทั้งหมด แต่สำหรับลูกค้ารายเดียว ดังนั้นเราจึงสามารถมีที่อยู่อีเมลเดียวกันได้หลายครั้ง แต่มีความแตกต่างใน ' ช่อง client_id' ในเอกสาร

ฉันจะใส่สิ่งนี้ลงใน Request-Class ของฉันได้อย่างไร


person Paladin    schedule 22.06.2017    source แหล่งที่มา
comment
ตรวจสอบคำตอบที่นี่ หวังว่ามันจะช่วยคุณได้   -  person Ruchi    schedule 22.06.2017


คำตอบ (1)


สำหรับ laravel 5.3 และสูงกว่า คุณสามารถเพิ่ม Where clause เพิ่มเติมสำหรับการตรวจสอบความถูกต้องเฉพาะได้ดังนี้

'email' => Rule::unique('users')->where(function ($query) {
    $query->where('user_id', Auth::user()->id);
})

อย่าลืมพูดถึงการใช้ Illuminate\Validation\Rule;

หรือลองใช้ laravel 5.2

ขณะใส่

'email' => 'unique:users,email,NULL,id,user_id,'.Auth::user()->id,

ขณะอัพเดต

'email' => 'unique:users,email,{id of object to edit},id,user_id,'.Auth::user()->id,

ในกฎข้างต้น เฉพาะแถวที่มี user_id เป็น Auth::id() เท่านั้นที่จะรวมอยู่ในการตรวจสอบที่ไม่ซ้ำ

person Ruchi    schedule 22.06.2017