در ادامه نوشته های Query Builder در لاراول، می خواهیم چگونگی بروز کردن بدست متد ()update و پاک کردن بدست متد ()delete را آموزش دهیم. کد زیر دستور SQL را برای عبارت UPDATE نشان می دهد که شامل سه بخش است. نخست دستور UPDATE که پیش روی آن نام جدولی می آید که می خواهیم یک یا چندین ستون آن را تغییر دهیم. سپس عبارت SET می آید که پیش روی آن یک یا چندین دو تایی های column=value می آید که هر دو تایی مقدار تازه ای را برای هر کدام از ستون ها تعیین می کند. سپس عبارت WHERE می آید که تغییر مقدار بر اساس آن شرط انجام می شود.

کد زیر نمونه ای از متد ()update را نشان می دهد. نخست همانند پیشین بدست متد ()table جدول دلخواه برگزیده می شود و سپس بدست متد ()where شرط تعیین می شود. در اینجا می خواهیم سطری را بروز کنیم که ستون id آن برابر با 1 است. سپس متد update فراخوانی می شود که یک آرایه انجمنی به آن فرستاده شده است.

هر کدام از دو تایی های درون آرایه انجمنی فرستاده شده به متد ()update همان یک یا چندین دو تایی column=value است که هر کدام مقدار تازه ای را برای هر یک از ستون ها تعیین می کنند. کد زیر نمونه دیگری را نشان می دهد که در آن از متد ()whereIn کمک گرفته شده است.

متد where همانند متد where در آرگومان نخست، نام یک کلید را دریافت ولی در آرگومان دوم یک آرایه از مقدارها را برای آن کلید دریافت می کند. کد زیر نمونه دیگری از برزورسانی داده ها با متد ()update را نشان می دهد. نخست یک آرایه به نام update$ ایجاد کرده ایم که هر عنصر آن یک آرایه انجمنی است که هر کدام دارای یک دوتایی column=value است.

متد ()whereIn در لاراول

()whereIn یکی از متدهای Collection در لاراول است که می توانیم برای فیلتر کردن یک آرایه آن را به کار ببریم. کد زیر نخست بدست متد ()collect که یک آرایه به آن فرستاده شده است، یک Collection پدید آورده ایم که در متغیر collection$ نگهداری می شود. هر عنصر آرایه فرستاده شده به متد ()collect خودش یک آرایه انجمنی با دو کلید به نام های product و price است.

سپس با متد ()whereIn تنها آرایه های انجمنی از آرایه فرستاده شده به متد ()collect برگشت داده می شوند که مقدار price آنها در دامنه شماره های ۱۵۰ و ۲۰۰ باشد که تنها آرایه های درونی نخست و سوم این شرط را پوشش می دهند. بنابراین این متد دو آرگومان ورودی دریافت می کند، یکی نام کلید و دیگری یک آرایه که فهرستی از مقدارها را برای فیلتر کردن خروجی تعیین می کند.

لاراول – معرفی Collection ها

لاراول – معرفی Collection ها – بخش دوم

متد ()updateOrInsert در لاراول

گاهی پیش می آید که می خواهید سطری درون پایگاه داده را بروز کنید و یا اینکه اگر آن سطر درون پایگاه داده نیست، آنرا به درج کنید. در چنین موردی باید متد ()updateOrInsert را به کار ببرید. این متد دو آرگومان را دریافت می کند. نخست یک آرایه انجمنی است که کلیدهای آن نام ستون و مقدار های آنها برابر با مقدار ستون است و از آنها برای پیدا کردن یک سطر کمک گرفته می شود. آرگومان دوم نیز یک آرایه انجمنی است که هر عنصر آن یک column=value است که مقدار تازه برای ستون ها را نشان می دهد.

در کد بالا نخست با توجه به دوتایی های column=value در آرایه نخست، جستجو می شود که آیا سطری با این ویژگی ها در جدول هست یا نه؟ اگر پیدا شد، پس سطر با دوتایی های آرایه دوم بروز می شود ولی اگر چنین سطری پیدا نشود، پس یک سطر تازه با ادغام هر دو آرایه به درون جدول درج خواهد شد.

متد ()delete در لاراول

کد های زیر الگوی دستور DELETE در زبان SQL را نشان می دهد. دستور نخست تمامی سطرهای درون جدول را پاک می کند ولی دومین دستور بر اساس یک شرط، یک یا چندین سطر را از جدولی پاک می کند. برای نمونه همه سطرهایی پاک شوند که ستون نام محصول یک مقدار ویژه باشد یا اینکه کارمندی پاک شود که مقدار ستون شناسه کارمندی آن یک شماره ویژه باشد.

در لاراول می توانیم متد ()delete را به کار ببریم تا همه سطرها پاک شوند یا اینکه بر اساس شرط، یک یا چندین سطر از جدول پاک شوند. در شکل زیر، در دستور نخست، چون متد ()where را به کار نبردیم، پس همه سطرها پاک می شوند ولی در دومی همه آن سطرهایی پاک می شوند که مقدار ستون vote بیشتر از ۱۰۰ باشد. در دستور سوم تنها سطری پاک می شود که مقدار شناسه id آن برابر با ۲۰۰ باشد.

متد ()truncate در لاراول

متد ()delete هیچ ورودی دریافت نمی کند و تنها یا همه سطرها را پاک می کند و یا بر اساس شرط متد ()where یک یا چندین سطر از جدول را پاک خواهد کرد. اگر می خواهید همه سطرهای جدول پاک شوند و همچنین شماره ستون INCREMENT به صفر برگشت داده شود، پس باید متد ()truncate را به جای ()delete به کار ببرید. اگر شما همه سطرهای جدول را پاک کنید، پس شماره ستون INCREMENT به صفر برگشت داده نمی شود سطر تازه درج شده پس از پاک کردن همه سطرها، از شماره پس از واپسین سطر پیشین به سطر داده می شود.