ارتقاء قوانین اعتبارسنجی unique و exists در لاراول

ارتقاء قوانین اعتبارسنجی unique و exists در لاراول
ارتقاء قوانین اعتبارسنجی unique و exists در لاراول

استفاده از validation rules در لاراول بسیار سادست. ValidatesRequests یه ویژگی بسیار قدرتمنده که به صورت خودکار توسط include, BaseControllerمیشه و قوانین بسیار مفیدی برای کدهایی که بیشتر مورد استفاده است،ارائه میکنه.

۲ قانون unique و exists برای اعتبار سنجی data های ذخیره شده روی database استفاده میشن و همیشه به فرمتی که در زیر آورده شده، میان:

1
2
3
4
// exists example
'email' => 'exists:staff,account_id,1'
// unique example
'email' => 'unique:users,email_address,$user->id,id,account_id,1'

همونطور که مشاهده میکنید Style نوشته شدنشون خیلی آسون نیست و نمیشه به راحتی به خاطر سپردش و البته در عین حال چیزیه که شما همیشه در Document هاتون بهش احتیاج دارین.

با استفاده از Laravel v5.3.18  این ۲ قانون توسط معرفی یک کلاس Rule ساده شدند.مثال بالا رو به شکل ساده تری میتونین مشاهده کنین:

1
2
3
4
5
6
'email' => [
    'required',
    Rule::exists('staff')->where(function ($query) {
        $query->where('account_id', 1);
    }),
],
1
2
3
4
5
6
'email' => [
    'required',
    Rule::unique('users')->ignore($user->id)->where(function ($query) {
        $query->where('account_id', 1);
    })
],

 

هر دوی این validation rule ها متدهای:

  • where
  • whereNot
  • whereNull
  • whereNotNull

را پشتیبانی میکنند.

قانون unique یک متد دیگه به نام ignor  را هم پشتیبانی میکنه که به این وسیله شما میتونین اعتبار سنجی روی بقیه data هاتون رو انجام بدین.

یکی دیگه از مزایای استفاده از این ویژگی اینه که فرمت قبلی هم به طور کامل پشتیبانی میشه و کافیه توسط متد formatWheres  به شکل و فرمت قبلی تبدیلش کنید:

1
2
3
4
5
6
protected function formatWheres()
{
    return collect($this->wheres)->map(function ($where) {
        return $where['column'].','.$where['value'];
    })->implode(',');
}

برای گرفتن آخرین ورژن لاراول کافیه که composer update را run کنید و پس از دانلود ورژن 5.3.18  از ویژگی های آن استفاده کنید و لذت ببرید.