Laravel Newbies (Arabic)
1.8K subscribers
84 photos
16 videos
19 files
55 links
Tasks to help newbies make their first project
Download Telegram
#Trick 13 Phone Validation

هي المكتبة شغلتها تتأكدلن من فورمات الرقم صحيحة ولا لا
يعني ما حدا اجا كتب 12345 وفكر حالو لح يمرقها علينا
هي المرحلة من الvalidation بتخفف عبئ على سيرفرات ال otp بحيث بتتخلص من الريكوستات الخطأ من عندك

فيكن تطلعو على المكتبة تشوفو خياراتا
انا من جهتي بعد ما نزلها بحط هي ال rule وبريح راسي
الكود لازم يكون بالشكل التالي
+963997111234
او بكذا فورمات تانية بس انا بفضلها

وبس الله يعطيكن العافية❤️
14🔥7👍2
#Trick 14 Scopes
بدل ما تحط الشرط انو اليوزر فعال بكل تابع
خلي الموديل يشتغل الشغل عنك بال Scope
خلي كودك نضيف
وخلي الموديل يتعامل مع الجدول تبعو قد ما بتقدر
الكنترولر بس للاستدعاءات
29👍4
#Trick 15 Seed: HasMany

لنفرض انو عنا
Country -> Has many Store
Store -> Has many Employee
وبدنا نعمل fake data لالهن
ف الحل بكون بانو نعمل Factory لكل واحد منهن ضمن القيود يلي بدنا باستخدام fake

وبال Seeder منستخدم التابع has يلي بيجي مع factory متل هيك
Model::factory(number) -> has (Model::factory (number))
وفينا نستخدما بكذا level مو بس level واحد

Notes
1_
لا تنسو تعرفو ال relations بقلب ال Models مشان يتعرف عليهن التابع has

2_
بحال كان التابع يلي معرفينو لل relation اسمو غير الاسم الستاندر لسبب ما (مثلا كان ال Model هو User بدل Employee و بال Store معرفين employees مش users
ف لحتى نخلي ال has يتعرف عليه منبعت الاسم بهل طريقة
has(User::factory (number), 'employees')
15👍5
#Trick 16

Laravel Telescope
هي ال Packege بتساعدك بعملية ال Debugging لكلشي نوعا عم يصير بالمشروع

متل ال Requests يلي عم تنطلب
وفينا نشوف معلومات كل Request

واهم شي انو فينا نشوف كل ال Queries يلي صارت بقلب هال Request لتساعدنا بأنو نحسنها

طبعا بعد ما نخلص عملية ال installation منفتح ال Browser ومنكتب
localhost:8000/telescope
🔥10👍63👏3❤‍🔥2
#Trick 17 Forelse
بدل ما اتاكد انو المصفوفة موجودة قبل ما امرق عليها بال for
وعالج حالة انها فاضية

منستخدم forelse ومنختصر حكي
17❤‍🔥4👍3
#Trick 18 Has one of many

احيانا بكون عنا علاقة Has many ونحنا بهمنا record واحد منهن ف مشان ما نعجق ال Controller لحتى نحصل هاد ال record
ف عنا شي اسمو ofMany يلي بتوفرلنا هي المهمة
بأنو نجيب record واحد بالشروط يلي بدنا ياها

باستخدام
latestOfMany() لنجيب اخر عنصر

oldestOfMany() لنجيب اول عنصر

ofMany(column, aggregate)
لنحدد ال column يلي بدنا نقارن فيه وحسب اذا Max او Min

والطريقة الاعقد هيي انو نجيب هاد العنصر بناءً على اكتر من column بحال كان في تساوي عن طريق انو نبعت array ال key فيها هو ال column وال value هي Max او Min

وممكن نعمل filtering لل query كمان عن طريق function

ويعطيكم العافية❤️
❤‍🔥142👍2🔥2
#Trick 19 withoutTimestamps

صار فيك تعدل بدون ما يتحدث حقل ال updated at
20👍1
#Trick 20 Update

كيف بدي ارتاح من قصة انو اذا كان الحقل موجود عدلو واذا لا تركو متل ما هوة؟
1. اذا كان الحقل موجود عدلو هية تابع ال isset() يعني على سبيل المثال:
'project' => isset($request['project']) ? $request['project'] : $report['project'],

هاد الحكي بال short if-else

بس في عنا trick بالـ php هو استبدال
 isset($request['project']) ? $request['project']

بـ
'project' => $request['project'] ??

هلا خلصنا من قسم اذا موجود عدلو

2.اذا لا تركو متل ما هوة
بأول التابع جيب الريكورد اللي بدك تعدلو وحطو بمتغير
$report = Report::query()->find($id);

هاد فيو قيم ما قبل التعديل

بس خلصنا تعديل متل الصورة رجاع نفذ نفس التعليمة بصير فيو القيم بعد التعديل اللي اذا بتحب ترجعها بالريسبونس

ودمتم سالمين❤️
10👍3❤‍🔥21
#Trick 21 Parameter Validation

صار فينا نعمل القيود global بال RouteServiceProvider
❤‍🔥85👍4
#Trick 22 First or latestest
🔥106👍3
#Trick 23 toQuery instead of for each
❤‍🔥1272👍2
#Trick 24 When

لنفرض انو عنا Orders وبدنا نرتبهن بأكتر من طريقة ونفلترهن حسب شي معين اذا مطلوب او لا
فعنا حل ظريف اسمو when وهو تابع منبعتلو اول باريمتر true او false
وتاني باريمتر callback للشروط يلي رح نضيفها للكويري بحال كان true متل بهل طريقة

وفينا نستخدم ال query string لحتى نبعت الشروط ونطبقها ب where

و حسب شو بدو يرتب بالقيم يلي بدو ياها asc او desc ونطبقها ب orderBy

ويعطيكم العافية
20
#Trick 25 Request Functions
❤‍🔥9🔥211👍1👏1
#Trick 26 View Routes
5👍2
#Trick 27 Barcode Generator

https://medium.com/techvblogs/how-to-generate-qr-code-in-laravel-8-5db5859ccbab

السطر اللي بهمك هوة
QrCode::size(300)->generate('https://techvblogs.com/blog/generate-qr-code-laravel-8')
غيرو الرابط متل ما بدكن

#تعديل
شرح مفصل من زميلنا أمجد @Amjad_ghzlan

https://t.me/I_got_an_error_Laravel/13600
42
#Trick 28 whereBetween
8❤‍🔥1👍1🎃1
#Trick 29 Unique between two feilds.

في حال عندك مكتبة وفيها كتب ولكل كتاب الو كود
الكود هاد ما لازم يتكرر بنفس المكتبة بس فيو يتكرر بغير مكتبة عادي

اول قسم بينحط بريكوست الcreate ليشيك على حقل الكود والكتاب سوا بنفس السطر حتى ما يتساوو لنفس المكتبة

تاني قسم للupdate بس بضيف عليه انو يتجاهل سطر المكتبة اللي عم عدل عليها هلا لانو بجوز ما عدلت الكود بهاد الريكوست
فلما ما بحط الشرط الزايد بقلك سوري مالو unique
16👍2
#Trick 30 Laravel Tinker
لجماعة ال PhpStorm هي ال Plugin ظريفة لحتى تخلينا نكتب كود معين وننفذه ونشوف نتائجه بطريقة مريحة اكتر من الشغل بقلب ال terminal
143
#Trick 32 Error Handling

لما يكون ال Controller عنا بيعتمد على classes تاني لمعالجة امور معينة فغالباً ما نلجأ لل Exceptions لحتى نرجع ايرور ونفهم ال controller انو لازم يرجع ايرور
لهيك حبيت وضح طريقة لحتى نقسم ال Exceptions يلي عنا ونخليهم يتعالجوا تلقائيا بدون ما نكتب try catch بكل مكان

الطريقة بأنه نعرف اول شي class بيورث من Exception ورح نخليه ال base Exception تبعنا (لحتى ما نخلي اللارافيل تعالج كلشي اخطاء وانما الاخطاء يلي نحنا رح نولدها) ويلي هي اول مرحلة

تاني مرحلة مشان نقسم ال Exceptions تبعاتنا لاكتر من class منعمل classes بتورث من CustomException ومنعرف بقلبها توابع static رح تكون مسؤولة عن انو تعطيني Exception حامل رسالة معينة بدي ياها و code معين

وبعدها منروح ل bootstrap/app.php وللتابع withExceptions رح نعرفه فيه طريقة معالجة ال Exceptions تبعاتنا (الوارثة من CustomException ورح نعتمد عليه ك parameter للتابع) وهي تالت مرحلة

واخر شي صار فينا نرمي ال Exception بدون ماعيد كتابة الرسائل بقلب ايا service المرحلة الرابعة

واخر مرحلة هو انو يتعالج الايرور لوحده تلقائيا كل مرة
9👍7🔥4
#Trick 33
هالمرة التريك بال Postman
بما انو لما بدنا نوثق ال Apis او نجربهم منستخدم Postman غالبا
ونحنا منكون بحاجة انو دايما نبعت
Accept: application/json
بال headers ف مشان ما نكررها بكل Api فينا نستخدم ال pre script يلي بكون موجود بال Collection ك كل
وبتطبق ع كلشي Api بأنه هاد السكريبت يضيف هاد ال key
بكتابة هالسطرين
pm.request.headers.add({
key: 'Accept',
value: 'application/json'
})
36🔥63