قصاصات لارافيل

إرجاع خطأ 204 في لارافيل


اذا كنا نتعامل مع api لكن لا يوجد نتائج، يمكن إرجاع خطأ 204 ، بمعنى No Content ، فقط قم بإستخدام response()->noContent

public function reorder(Request $request){
    foreach ($request->input('rows', []) as $row) {
         Country::find($row['id'])->update(['position' => $row['position']]);
    }
    return response()->noContent();
}

أنواع الحقول في laravel migration


يوجد أنواع متنوعة للجداول عند عمل migration ومن أهمها

$table->ipAddress('visitor');
$table->macAddress('device');

للمزيد من أنوع الحقول من الموقع الرسمي

إستخدام ترقيم bootstrap للصفحات بدل tailwind في laravel 8


في laravel 8  تم إستبدال ترقيم الصفحات pagination من bootstrap إلى tailwind، لكن نستطيع إستخدام ترقيم bootstrap من خلال

الذهاب الى صفحة app/Providers/AppServiceProvider.php ومن ثم بداخل الدالة boot

public function boot(){
  Paginator::useBootstrap();
}

إستخدام migration لإضافة حقل إلى جدول موجود


لإضافة حقل جديد إلى جدول موجود، مثلا إضافة حقل slug إلى جدول articles.

ننشئ migration جديد، ونسيمه addFieldNameToTableName

php artisan make:migration addSlugToPost
public function up()
    {
        Schema::table('posts', function (Blueprint $table) {
            $table->string('slug');
        });
    }

عمل تعديل مباشرة دون عمل تحميل البيانات من قاعدة البيانات


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

Cat::where('id',$id)->update(['title' => "Updated Title"]);

جلب البيانات بشكل عشوائي في لارافيل


إذا أردنا أن يتم جلب البيانات بترتيب عشوائي في كل مرة

$questions = Questions::inRandomOrder()->get();

واذا كنا نجلب البيانات من جدولين بإستخدام العلاقه برتيب عشوائي، مثلا إذا كان لدينا إمتحان ونريد في كل مره أن نجلب سؤال مختلف مع أجوبه يختلف ترتيبها في كل مره

$questions=Question::with([‘answers’=>function(){
            $q->inRandomOrder();
}])->inRandomOrder()->get();

التحقق من أن المدخلات تساوي قيمة معينة في laravel validation


نستطيع التحقق من أن قيمة الحقل تساوي قيمة معينة، مثل هنا سنتأكد أن  البريد الإلكتروني هو بريد معين

$validator = Validator::make($request->all(), [
    'title' => [
        'required',
        'max:255',
        function($attribute, $value, $fail) {
            if ($value === 'foo') {
                return $fail($attribute.' is invalid.');
            }
        },
    ],
]);

هنا إذا كانت قيمة الحقل = foo سيتم إرجال title is invalid

كما يمكن ببساطه إستخدام

'title' => [
    'in:foo',
],

هنا اذا كانت قيمة الحقل لا تساوي foo سيتم إرجاع The selected title is invalid.

'title' => [
    'not_in:foo',
],

هنا إذا كانت القيمة تساوي foo سيتم إرجاع خطأ

جلب مجموع السجلات عند إستخدام pagination


لجلب مجموع السجلات عند إستخدام pagination يجب تعيين المتغير sum قبل عمل pagination 

$query=Post::query();
$sum=$query->sum('post_views');
$posts=$query->paginate(10);

لأنة لو قمنا بعمل 

$query=Post::paginate(10);
$sum=$query->sum('post_views');

فإنه سيظهر المجموع فقط لكل صفحة.

إستخدام foreach في لارافيل


إذا كان لدينا @foreach في blade ونريد أن يتم طباعة سطر بعد كل عنصر يتم جلبة من قاعدة البيانات، بالإمكان إستخدام المتغير $loop لتحديد اذا كان العنصر الذي تم جلبه هو العنصر الأول أو الأخير أو حتى ما هو رقم العنصر

@foreach($posts as $post)
    <h2>{{ $post->title }}</h2>
    @if(!$loop->last)
        <hr/>
    @endif
@endforeach

المزيد من خصائص $loop يمكن الإطلاع عليها من هنا.

معاني أرقام الاخطاء التي قد تراها على مواقع الأنترنيت


403 : ممنوع أن تصل لهذه الصفحة

404 : صفحة غير موجودة

500 : مشكلة في الموقع نفسه

401 : رؤية الصفحة تحتاج ترخيص (كلمة سر)

301 : تم نقل تلك الصفحة نهائيًا

307 : تم نقل تلك الصفحة مؤقتًا

405 : لقد وصلت لتلك الصفحة بطريقة خاطئة

408 : إنتهى وقت محاولة وصولك للصفحة قبل أن تصل إليها

414 : عنوان الصفحة\الموقع URL أطول من الطبيعي

503 : الخدمة غير متوفرة ربما بسبب الضغط الكبير على الموقع

كل أرقام الـ 100 : تعني معلومات إضافية (لن تراها في الغالب)

كل أرقام الـ 200 : تعني النجاح (لن تراها في الغالب)

كل أرقام الـ 300 : تعني إعادة توجيه Redirection

كل أرقام الـ 400 : تعني فشل من العميل “أنت”

كل أرقام الـ 500 : تعني فشل من السيرفر “الموقع نفسه”