بخش دوم - مدل ها - قسمت دوم (متدهای ایجاد، ذخیره)
1- متد create
برای ایجاد و ذخیره یک مدل جدید در دیتابیس استفاده میشود. این متد یک آرایه از ویژگیها را میگیرد و یک رکورد جدید را در دیتابیس ایجاد و ذخیره میکند.
$user = User::create([
'name' => 'John',
]);
2- متد firstOrNew
سعی میکند یک رکورد مطابق با شرایط مشخص شده را در دیتابیس پیدا کند. اگر پیدا شود، همان مدل را برمیگرداند؛ در غیر این صورت، یک مدل جدید ایجاد میکند ولی آن را ذخیره نمیکند.
$user = User::firstOrNew(['email' => 'example@gmail.com']);
$user->name = 'John';
$user->save();
اگر چنین کاربری وجود داشته باشد، آن را برمیگرداند. اگر نه، یک نمونهی جدید ایجاد میکند و شما میتوانید قبل از ذخیره، اطلاعات بیشتری را به آن اضافه کنید.
3- متد firstOrCreate
مشابه firstOrNew است، اما به محض اینکه مدل جدید را ایجاد کرد، بلافاصله آن را در دیتابیس ذخیره میکند.
$user = User::firstOrCreate(
['email' => 'example@gmail.com'],
['name' => 'John']
);
4- متد updateOrCreate
یک رکورد را بر اساس شرایط مشخص شده بهروز رسانی میکند و اگر وجود نداشت، یک رکورد جدید ایجاد و ذخیره میکند.
$user = User::updateOrCreate(
['email' => 'example@gmail.com'],
['name' => 'John']
);
5- متد save
برای ذخیره کردن یک مدل جدید یا بهروزرسانی یک مدل موجود در دیتابیس استفاده میشود.
$user = new User;
$user->name = 'John';
$user->save();
این کد یک نمونهی جدید از مدل User ایجاد میکند، سپس مقادیر فیلدهای name را تنظیم میکند و در نهایت آن را در دیتابیس ذخیره میکند.
6- متد saveMany
برای ذخیره کردن چندین مدل مرتبط در یک زمان استفاده میشود.
$post = Post::find(1);
$comments = [
new Comment(['message' => 'First']),
new Comment(['message' => 'Second']),
];
$post->comments()->saveMany($comments);
این مثال برای یک پست چندین کامنت ایجاد و ذخیره می کند (توضیح کامل تر پس از آموزش روابط دیتابیس)
7- متد saveQuietly
مشابه متد save است، با این تفاوت که رویدادهای مدل (events) را تحریک نمیکند.
8- متد createMany
برای ایجاد و ذخیره چندین مدل به طور همزمان استفاده میشود.
$post = Post::find(1);
$post->comments()->createMany([
['message' => 'First'],
['message' => 'Second']
]);
این مثال برای یک پست چندین کامنت ایجاد می کند (توضیح کامل تر پس از آموزش روابط دیتابیس)
9- متد createManyQuietly
مشابه createMany است، اما رویدادهای مدل (events) را تحریک نمیکند.
10- متد createQuietly
مشابه create است، اما رویدادهای مدل را تحریک نمیکند.
11- متد insert
برای وارد کردن چندین رکورد به طور همزمان در جدول دیتابیس استفاده میشود. این متد یک نمونه از مدل را برنمیگرداند.
User::insert([
['name' => 'John'],
['name' => 'Jane']
]);
12- متد insertOrIgnore
مانند insert است، اما اگر رکوردها در زمان درج، خطایی ایجاد کنند (مانند تکراری بودن دادهها)، این خطاها را نادیده میگیرد.
13- متد insertUsing
به شما اجازه میدهد دادهها را از یک کوئری دیگر درج کنید.
ArchivedUser::insertUsing(['name', 'email'], function ($query) {
$query->select('name', 'email')->from('users')->where('active', 0);
});این کد کاربران غیر فعال را از جدول users انتخاب کرده و در جدول archived_users درج میکند.(توضیح سایر متد ها در قسمت های بعد).
14- متد insertGetId
یک رکورد جدید درج میکند و شناسه (ID) آن رکورد را برمیگرداند.
User::insertGetId(
['name' => 'John']
);
15- متد upsert
چندین رکورد را درج یا بهروزرسانی میکند. این متد برای شرایطی مناسب است که شما میخواهید رکوردهایی که وجود دارند را بهروزرسانی کنید و رکوردهایی که وجود ندارند را ایجاد کنید.
User::upsert([
['email' => 'john@gmail.com', 'name' => 'John'],
['email' => 'jane@gmail.com', 'name' => 'Jane']
], ['email'], ['name']);
اگر کاربری با همان ایمیل وجود داشته باشد، فقط نامش بهروزرسانی میشود؛ وگرنه رکورد جدیدی ایجاد میشود.
16- متد updateOrInsert
این متد شبیه updateOrCreate است، با این تفاوت که مستقیماً با دیتابیس کار میکند و مدل را باز نمیگرداند.
17- متد fill
برای پر کردن مدل با دادههای مشخص استفاده میشود. این متد مدل را ذخیره نمیکند؛ تنها مقادیر فیلدها را تنظیم میکند.
$user = new User;
$user->fill(['name' => 'John']);
$user->save();
#laravel #لاراول #فصل_۴
@AmirhDeveloper
.