معتز المشكلي نشر 15 أبريل 2021 أرسل تقرير نشر 15 أبريل 2021 استغرقت جهدي لحل هذين الخطئين عدم دخول البيانات في قاعدة البيانات الخطأ الوارد في الصورة أدناه طبعا يذهب الخطأ إذا كان داخل الدالة الشرطية @if (is_array($projects) || is_object($projects)) ... ولكن تعمل الصفحةجيدا مع المدرب ومن دون الدالة الشرطية لماذا ؟ myprojects.rar اقتباس
0 سمير عبود نشر 15 أبريل 2021 أرسل تقرير نشر 15 أبريل 2021 هناك عدة أخطاء حيث أن projects هو عبارة عن مُتغير يتم تمريره من المتحكم: $projects = auth()->user()->projects; في الأخير أنت تنادي على العلاقة projects لكن في النموذج User قمت بتسمية العلاقة ب project لذلك يجب تصحيح ذلك لتُصبح العلاقة: public function projects() { return $this->hasMany(Project::class); } أنت لا تقوم بتحديد ماهو المفتاح الثانوي في العلاقة لذلك يجب أن تحترم العُرف و تقوم بتسميته user_id و ليس users_id و في هذه الحالة لديك طريقتين: تغيير users_id إلى user_id في كل من ملف التهجير: $table->foreignId('user_id')->references('id')->on('users')->onDelete('cascade'); تنفيذ أمر التهجير: php artisan migrate:fresh ثم تغيير الحقل من users_id إلى user_id في مصفوفة fillable في النموذج Project ثم تغيير التابع store في المتحكم ProjectController ليُصبح: <?php public function store(Request $request) { $data = request()->validate([ "title" => 'required', "description" => 'required', ]); $data['user_id'] = auth()->id(); Project::create($data); return redirect('/projects'); } و بهذا الشكل ستعمل. الطريقة الثانية بترك الحقل كما تريد users_id لكن تحتاج إلى تغيير العلاقة بحيث تُحدد المفتاح الثانوي بهذا الشكل: public function projects() { return $this->hasMany(Project::class, 'users_id'); } و بطبيعة الحال تجعل الدالة store بالشكل التالي: <?php public function store(Request $request) { $data = request()->validate([ "title" => 'required', "description" => 'required', ]); $data['users_id'] = auth()->id(); Project::create($data); return redirect('/projects'); } 2 اقتباس
0 سامح أشرف نشر 15 أبريل 2021 أرسل تقرير نشر 15 أبريل 2021 يبدو أن هناك إختلاف بين الكود المرفق والصور، ربما قام Laravel بحفظ نسخة من ملف index.blade.php في الملفات المؤقتة، ويمكنك تجربة الأمر التالي وإعادة المحاولة: php artisan view:clear اقتباس
0 معتز المشكلي نشر 16 أبريل 2021 الكاتب أرسل تقرير نشر 16 أبريل 2021 بتاريخ 14 ساعات قال سامح أشرف: يبدو أن هناك إختلاف بين الكود المرفق والصور، ربما قام Laravel بحفظ نسخة من ملف index.blade.php في الملفات المؤقتة، ويمكنك تجربة الأمر التالي وإعادة المحاولة: php artisan view:clear لقد قمت بذلك الامر يدويا وغيره بتاريخ 14 ساعات قال عبود سمير: هناك عدة أخطاء حيث أن projects هو عبارة عن مُتغير يتم تمريره من المتحكم: $projects = auth()->user()->projects; في الأخير أنت تنادي على العلاقة projects لكن في النموذج User قمت بتسمية العلاقة ب project لذلك يجب تصحيح ذلك لتُصبح العلاقة: public function projects() { return $this->hasMany(Project::class); } أنت لا تقوم بتحديد ماهو المفتاح الثانوي في العلاقة لذلك يجب أن تحترم العُرف و تقوم بتسميته user_id و ليس users_id و في هذه الحالة لديك طريقتين: تغيير users_id إلى user_id في كل من ملف التهجير: $table->foreignId('user_id')->references('id')->on('users')->onDelete('cascade'); تنفيذ أمر التهجير: php artisan migrate:fresh ثم تغيير الحقل من users_id إلى user_id في مصفوفة fillable في النموذج Project ثم تغيير التابع store في المتحكم ProjectController ليُصبح: <?php public function store(Request $request) { $data = request()->validate([ "title" => 'required', "description" => 'required', ]); $data['user_id'] = auth()->id(); Project::create($data); return redirect('/projects'); } و بهذا الشكل ستعمل. الطريقة الثانية بترك الحقل كما تريد users_id لكن تحتاج إلى تغيير العلاقة بحيث تُحدد المفتاح الثانوي بهذا الشكل: public function projects() { return $this->hasMany(Project::class, 'users_id'); } و بطبيعة الحال تجعل الدالة store بالشكل التالي: <?php public function store(Request $request) { $data = request()->validate([ "title" => 'required', "description" => 'required', ]); $data['users_id'] = auth()->id(); Project::create($data); return redirect('/projects'); } شكرا.لا اتبعت العرف والطريقة الاولى. اقتباس
السؤال
معتز المشكلي
استغرقت جهدي لحل هذين الخطئين
ولكن تعمل الصفحةجيدا مع المدرب ومن دون الدالة الشرطية لماذا ؟
myprojects.rar
3 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.