اذهب إلى المحتوى

سمير عبود

الأعضاء
  • المساهمات

    3558
  • تاريخ الانضمام

  • تاريخ آخر زيارة

  • عدد الأيام التي تصدر بها

    34

كل منشورات العضو سمير عبود

  1. يُمكنك إضافة قيد على مُستوى قاعدة البيانات في جدول photos: في الإصدارات القديمة: $table->unsignedInteger('user_id'); $table->foreign('user_id') ->references('id') ->on('users') ->onDelete('cascade');; في الإصدارات الحديثة تم إختصار العملية بهذا الشكل: $table->foreignId('user_id') ->constrained() ->onDelete('cascade'); // أو $table->foreignId('user_id') ->constrained() ->cascadeOnDelete(); // او $table->foreignId('user_id') ->constrained('users') // تضع إسم الجدول إن لم تقم بإحترام القاعدة في تسمية الجداول و المفاتيح ->cascadeOnDelete();
  2. إن كان الهدف هو إرجاع سجل واحد فالأفضل إستخدام التابع find او first او findOrFail او firstOrFail لأن get تُعيد مجموعة سجلات حتى و لو كانت النتيجة هي سجل واحد فستُعيد السجل بداخل مصفوفة: $about = Page::where('page', 'about-me')->first(); $about = Page::where('page', 'about-me')->firstOrFail(); // إرجاع الصفحة 404 في حالة عدم وجود أي سجل $about = Page::find(3); // إبحث عن السجل ذو المعرف 3 $about = Page::findOrFail(3); // إرجاع الصفحة 404 في حالة عدم وجود أي سجل
  3. يُمكنك الحصول على تلك النتيجة بإستخدام الكود التالي: $from = $to = Reservation::whereBetween('reservation_from', [$from, $to])->get(); أو: $from = $to = $reservations = Reservation::whereRaw( "(reservation_from >= ? AND reservation_from <= ?)", [$from, $to] )->get();
  4. يُمكنك الحصول على تلك النتيجة بإستخدام التالي: <?php $user_info = DB::table('usermetas') ->select('browser', DB::raw('count(*) as total')) ->groupBy('browser') ->get(); او إستخدام التالي: <?php $user_info = DB::table('usermetas') ->select('browser', DB::raw('count(*) as total')) ->groupBy('browser') ->pluck('total','browser') ->all(); و في هذه الحالة ستكون النتيجة عبارة عن مصفوفة ترابطية حيث اسم المتصفح هو المفتاح و العدد الكلي هو القيمة: [ "browser 1" => 2, "browser 2" => 4, "browser 3" => 4, // ... // ... ]
  5. يُمكنك إستخدام التالي للتحقق من أن المجموعة ليست فارغة: if ($result->isNotEmpty()) { // التحقق من أن المجموعة ليست فارغة // } // أو if (!$result->isEmpty()) { // التحقق من أن المجموعة ليست فارغة // } او التالي لحساب أو إرجاعة عناصر المجموعة: $result->count(); أما إن كنت تستخدم الترقيم و إرجاع النتائج على شكل صفحات: $result->total();
  6. في الإصدارات من 5.5 فما فوق يُمكن إستخدام التوجيه php و تعريف المتغيرات فيه أو إجراء تعلميمات php بداخله بهذا الشكل: @php $i = 1 @endphp او: @php ($i = 1) أما في الإصدارات الأقدم يُمكنك عمل التالي: {{-- */$i=0;/* --}} أو بإستخدام توجيه if بالشكل التالي: @if ($variable = 'any data') @endif ثم عند الإستخدام: {{ $variable }}
  7. في الإصدارات الحديثة من 5.5 فما فوق أصبح بالإمكان عمل التالي: Abc::selectSub(function($q) { $q->select('*')->groupBy('col1'); }, 'a')->count('a.*'); أو: Abc::selectSub(Abc::select('*')->groupBy('col1'), 'a')->count('a.*');
  8. Locale عبارة عن كلاس أول حرف منه يكتب كبير و ليس locale
  9. لا يوجد مشكلة في الكود الذي أرفقته فهو يعمل لدي: رُبما الماسح في جهازك يستخدم نمط آخر للأعداد العُشرية، لذلك حاول إستبدال: Scanner s = new Scanner(System.in); بهذا: Scanner s = new Scanner(System.in).useLocale(Locale.US); و لا تنسى تضمين الحزمة Locale في البداية: import java.util.Locale;
  10. إذا كان هذا هو كل الكود فينقصك إغلاق المعقوفات الخاصة بكل من الميثود و الكلاس: import java.util.Scanner; public class abdullha { public static void main(String[] args) { Scanner s = new Scanner(System.in); System.out.println("Enter the nis vale: "); double nis = s.nextDouble(); System.out.println("Enter the exchange rate:"); double job = s.nextDouble(); System.out.println("the vale is: "+ (nis/job)); } // <- غير موجودة } // <- غير موجودة
  11. أعتقد أن سبب المُشكلة أنك تقوم بتشفير كلمة المرور مرتين الأولى في المُتحكم RegisterController و الثانية في الMutator او المُعدل: setPasswordAttribute و لحل المُشكل يُمكنك الإستغناء عن الMutator و إستعمال فقط التشفير في المُتحكم RegisterController : <?php protected function create(array $data) { return User::create([ 'name' => $data['name'], 'email' => $data['email'], 'password' => Hash::make($data['password']), ]); } // أو protected function create(array $data) { return User::create([ 'name' => $data['name'], 'email' => $data['email'], 'password' => bcrypt($data['password']), ]); } أما إن أردت إستخدام المُعدِل setPasswordAttribute فيُمكنك ذلك لكن يجب عدم تشفير كلمة المرور في المُتحكم RegisterController بهذا الشكل: 'password' => $data['password'], بدل: 'password' => Hash::make($data['password']), ثم في المُعدل: public function setPasswordAttribute($value) { $this->attributes['password'] = bcrypt($value); } و بهذا الشكل سيتم تشفير كلمة المرور من جهة واحدة. ملاحظة: تستخدم Laravel التشفير bcrypt إفتراضياً و تدعم الأنواع التالية: bcrypt, argon, argon2id لذلك إن لم تُغير في الإعدادات يُمكنك إستخدام الدالة المُساعدة bcrypt أما إن قمت بتغيير الإعدادات فيجب إستعمال الكلاس Hash.
  12. تحتاج إلى التعديل على ملف الإعدادات env. لكن أولا قم بتنفيذ الأمر: docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' <container_name_or_container_ID> سيقوم الأمر بإرجاع عنوان IP لل mysql container ستقوم بنسخه ووضعه في ملف env. DB_HOST=<ip_address_returned> بعد ذلك قم بتنفيذ امر التهجير: sail artisan migrate
  13. يوجد الكثير من المصادر الممتازة و المجانية على شبكة الإنترنت التي من خلالها يمكنك تعلم البرمجة خطوة بخطوة، لكن قبل البدأ في التعلم عليك إلقاء نظرة على المجالات المُتاحة و سوق العمل و تختار المجال المُناسب لك و الذي يتوافق مع سوق العمل المُستهدف من طرفك. كبداية يُمكنك الإطلاع على هذا المقال المُقدم من أكاديمية حسوب الذي سيكون لك كخطوة أولية للتعرف على البرمجة و مجالاتها: بعد إختيار المجال المناسب لك يُمكنك البدأ في تعلم التقنيات اللازمة لإحتراف ذلك المجال و تطوير مُستواك فيه.
  14. يُمكنك الإطلاع على هذا الدليل المقدم من شركة حسوب: دليل العمل عن بعد فهو يشرح مُعظم الأمور التي تُطبقها شركة حسوب في تطبيق آلية العمل عن بعد و تحقيق أكبر إستفادة من هذا النظام لكل من الشركة و الموظفين.
  15. لا يُمكن ملاحظة الخطأ من صورة، قم بنسخ الكود وضعه في تعليق بهذا الشكل: import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("enter val1:"); double val1 = sc.nextDouble(); System.out.println("enter val2:"); double val2 = sc.nextDouble(); System.out.println(val1/val2); } }
  16. يُمكنك تجربة المثال الخاص بك من هنا فهو يعمل: رابط تجريبي
  17. أعتقد أنك تقوم بإدخال القيمة بهذا الشكل 5,6 مثلاً لكن يجب إدخال القيمة بهذا الشكل 5.6 أي نُقطة بدل فاصلة
  18. حتى نعلم سبب المُشكلة يجب الإطلاع على الكود الذي كتبته
  19. أقصد شيفرات البرنامج حتى نعلم سبب المُشكلة
  20. المشكلة أن الإصدار 5.0 من pusher كان به خلل وتم إصلاحه في الإصدارات التالية . لحل المُشكلة يجب عليك تعديل ملف composer.json الخاص بك: من: "pusher/pusher-php-server": "5.0" إلى: "pusher/pusher-php-server": "^5.0" بعد ذلك قم بتنفيذ الأمر: composer update للمزيد من التفاصيل يُمكنك الإطلاع على الخلل في github: إضغط هنا
  21. هل يُمكنك مشاركة الكود الخاص بك حتى نستطيع مساعدتك
  22. في مشروعك كل شيء يعمل بقيت لديك مُشكلة واحدة و هي أنه يوجد ملف إسمه application.css موجود في المسار app/assets/stylesheets يجب حذفه وقد قام المُدرب في الدرس بحذفه في الدقيقة 2:10 هذا الملف يمنع تطبيق التنسيقات التي رفعناها إذا قمت بحذفه ستجد كل شيئ يعمل بشكل جيد. أرجو إخباري بالنتيجة.
  23. هل تستعمل المشروع الذي أرفقته لك ام تستعمل المشروع الخاص بك الذي عدلت عليه، أعتقد أنك نسيت خطوة من الخطوات أو لم تعملها بشكل جيد، هل قمت بنقل ملفات stylesheets المُرفقة و وضعتها في المجلد الذي أخبرتك عنه ؟ أيضاً هل قمت بحذف ملف application.css؟
  24. إستعمل الملف الذي الذي أرفقته لك فهو يعمل لدي بشكل جيد غير فقط نسخة روبي في ملف Gemfile ثم bundle install بخصوص الخطأ الذي أدرجته فقد ظهر لي لكن الحل الخاص به هو هذا: يوجد لديك ملفين بنفس الإسم أحدهما registrations_controller.rb و الثاني هو registrations.controller.rb تأكد أنك تُعدل على هذا الملف registrations_controller.rb و بعد ذلك قم بتسجيل مُستخدم جديد و ليس تسجيل دخول لأن المُستخدمين الأقدم تم تسجيلهم و الخطأ موجود. لذلك قم بتسجيل مُستخدم جديد و لن يظهر معك الخطأ. أطلعني على النتيجة.
  25. يُسمى الترقيم و يعني جلب البيانات على شكل صفحات في كل صفحة 15 سجل و ذلك حتى لا نجلب كل البيانات دفعة واحدة و عند عرض البيانات إذا تصفحنا: domain.com/posts سيتم عرض أول 15 سجل أما إذا تصفحنا: domain.com/posts?page=2 فسيتم عرض الصفحة الثانية من السجلات. للحصول على معلومات أكثر يُمكن القراءة عن الموضوع: ترقيم الصفحات Pagination في Laravel
×
×
  • أضف...