تعریف تابع Builder::addUniqueIdsToUpsertValues()
تابع addUniqueIdsToUpsertValues
در فریمورک لاراول ۱۱ به شما کمک میکند تا بهراحتی شناسههای یکتا به مقادیر آپدیت پذیر در عملیات upsert
اضافه کنید. یکی از مشکلاتی که ممکن است هنگام وارد کردن دادهها به پایگاه داده با آن مواجه شوید، این است که مقادیر تکراری وجود دارند و بدین ترتیب باید طوری عمل کنید که فقط دادههای یکتا وارد شوند.
در لاراول، عملیات upsert
به شما اجازه میدهد تا دادهها را بهصورت همزمان آپدیت و وارد کنید. برای مثال، شما میتوانید یک رکورد را اگر وجود داشته باشد آپدیت کنید و اگر وجود نداشت، آن را وارد کنید. به این ترتیب، برنامهتان بهینهتر و سریعتر عمل میکند.
از آنجا که اضافه کردن شناسههای یکتا به رکوردها میتواند در بهینهسازی عملکرد کلی برنامه مؤثر باشد، تابع addUniqueIdsToUpsertValues
بهطور خاص برای این هدف طراحی شده است. این تابع به شما این امکان را میدهد که تضمین کنید شناسهها در هنگام آپدیت یا وارد کردن جدید، تکراری نخواهند شد.
با استفاده از این تابع، شما میتوانید به سادگی و بدون هیچگونه پیچیدگی اضافی، اطمینان حاصل کنید که دادههای شما همیشه یکتا میمانند. این کار میتواند از بروز خطاها و عدم سازگاری دادهها جلوگیری کند و به عملکرد بهتر پایگاه داده کمک کند.
$values = [
[ 'name' => 'example', 'email' => '[email protected]' ],
[ 'name' => 'test', 'email' => '[email protected]' ]
];
DB::table('users')->upsert(
$values,
['email'], // Unique by email
['name'] // Update name if exists
);
توضیح کد
$values
: این متغیر شامل آرایهای از دادهها است که میخواهیم به جدول users
اضافه کنیم. هر رکورد شامل نام و ایمیل کاربر است.
DB::table('users')->upsert
: این خط فراخوانی تابع upsert
برای جدول users
را نشان میدهد که در آن دادهها بهصورت همزمان وارد و آپدیت میشوند.
['email']
: این بخش مشخص میکند که فیلد ایمیل باید بهعنوان شناسه یکتای رکوردها در نظر گرفته شود. یعنی اگر ایمیلی مشابه وجود داشته باشد، رکورد مورد نظر آپدیت خواهد شد.
['name']
: در این قسمت مشخص شده که اگر رکوردی با همان ایمیل پیدا شد، باید فقط فیلد نام آن رکورد آپدیت شود.