متد ()get همه سطرها را برای همه ستون ها برگشت می دهد ولی گاهی نیاز نیست که نام همه ستون ها برگشت داده شود. به عبارتی متد ()get همسان با  دستور SELECT * FROM table_name است ولی گاهی نیاز داریم تا تنها برای نمونه دو ستون name و email برگشت داده شوند. در این باره باید متد ()select را به کار ببرید.

متد ()select

ورودی متد ()select می تواند یک رشته یا چندین رشته باشد که هر کدام برابر با نام یکی از ستون های جدول هستند. در کدهای زیر، دو ورودی name و email as user_email به متد ()select  فرستاده شده اند که همسان با پرس و جو SELECT name, email AS user_email FROM users است. بنابراین می توانید در رشته ورودی، در کنار نام ستون عبارت AS در SQL را نیز به کار ببرید. توجه کنید که ()select بخشی از Query Builder است و از روی ورودی ها شما یک دستور SQL پدید می آورد.

در نخستین کد بالا چون متد ()get را به کار برده ایم، پس تمامی سطرها برگشت دهند. متد ()select فیلتری بود بر روی نام ستون های برگشتی و متد ()where فیلتری است بر روی سطرهای برگشتی که بر پایه یک یا چندین شرط می توان آنها را فیلتر کرد. در کدهای زیر از متد ()where برای فیلتر کردن سطرهای برگشتی کمک گرفته ایم. همچنین در سومین کد زیر چون متد ()count را به کار بردیم، پس تنها تعداد سطرهای برگشتی، نشان داده می شود.

همچنین در شکل بالا می توانید تفاوت میان خروجی ()get و ()first را ببینید. خروجی ()get یک آرایه از سطرها است، زیرا ()get همه سطرها را (بر پایه شرط یا بدون شرط) برگشت می دهد ولی متد ()first تنها یک سطر را (بر پایه شرط یا بدون شرط) برگشت می دهد. در شکل بالا چون تنها یک کاربر با نام amir در جدول users است، پس خروجی ()get و ()first در اینجا تفاوتی ندارند.

متد ()addSelect

با متد ()select یک پرس و جو SELECT را آماده می کنیم ولی شاید نام ستونی را بخواهیم بر پایه یک پرس و جو بی افزاییم تا این بار در کنار ستون های پیشین، این ستون تازه نیز در خروجی پرس و جو باشد، پس در این باره باید متد ()addSelect را همانند نمونه کد زیر به کار ببریم. در کد زیر نخست ستون name به پرس و جود افزوده شده و خروجی آن در متغیر query$ نگهداری می شود و سپس ستون email به پرس و جوی query$ افزوده شده تا خروجی آن در user$ نگهداری شود.

متد ()distinct

با متد ()distinct می توانیم سطرهای تکراری را در خروجی تنها یک بار نشان دهیم. برای نمونه شما جدولی از خریدارها دارید که یک ستون برای نگهداری شهر زندگی آنها در جدول هست. می خواهید بدانید خریدارهای شما تا به امروز از کدام شهرهای کشور بوده اند، پس چون شاید نام یک شهر چندین بار در جدول باشد و شما این تکرار را نمی خواهید بلکه تنها و تنها نام شهر ها را می خواهید، پس باید عبارت distinct را همانند کد زیر به کار ببرید. در کد زیر می خواهیم تنها نام کاربران را به گونه غیر تکراری نشان دهیم.

دانلود کد Laravel Query BuilderPart4