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

السؤال

نشر (معدل)

أقوم بمشروع لإضافة الفرق واللاعبين على حدى. لقد قمت أيضاً بإنشاء علاقة بين الفريق واللاعب، ولديّ جدولين لكل منهما في البيانات. 

عندما أضغط على إحدى الفرق، لأضيف لها لاعباً. تتم إضافة التفاصيل ما عدا رقم الفريق أي foreign key for team_id in the players table، هذا العمود يظهر فارغاً. كما في الخطأ أدناه. 624c3293295b1_2022-04-05(2).thumb.png.f6820b7b51e9168e9a20934f8a50d1f3.png

لو عدت لصفحة PlayerController فإني قمت باستدعاء رقم الفريق 

624c32ca02cc7_2022-04-05(1).png.e94b5c5892d08087d95783a8f165fd7e.png

فأين الخلل؟

 

الخطأ

insert into `players` (`name`, `number`, `team_id`, `updated_at`, `created_at`) values (neymar, 8, ?, 2022-04-05 11:55:12, 2022-04-05 11:55:12)

الشيفرة 

public function store(Team $team)
{
  Player::create([
    'name' => request('player_name'),
    'number' => request('player_number'),
    'team_id' => $team->id,
  ]);

  return redirect('/team/edit');
}

int_crud.zip

laravel__int_crud.sql

تم التعديل في بواسطة Hassan Hedr
إضافة الشيفرة ونص الخطأ

Recommended Posts

  • 0
نشر (معدل)

الخطأ

insert into `players` (`name`, `number`, `team_id`, `updated_at`, `created_at`) values (neymar, 8, ?, 2022-04-05 11:55:12, 2022-04-05 11:55:12)

الشيفرة 

public function store(Team $team) {

  Player::create([

    'name' => request('player_name'),

    'number' => request('player_number'),

    'team_id' => $team->id,

  ]);

  return redirect('/team/edit');

}
تم التعديل في بواسطة عبود سمير
وضع الأكواد في مكانها
  • 0
نشر

المتغير team الممرر للتابع store ضمن المتحكم لا يتم جلبه بشكل صحيح، يجب التأكد من تعريف متغير team ضمن أقواس "{ }" عند تعريف المسار المخصص له كالتالي:

Route::post('/team/{team}/edit/player/create',[PlayerController::class,'store']);
                   ^^^^^^

وعند ذكر هذا المسار ضمن ملفات العرض يجب تبديل team بمعرف الفريق المناسب مثلًا كالتالي:

<form action="/team/{{ $team->id }}/edit/player/create" method="POST">
  ...               ^^^^^^^^^^^^^^^
</form>

 

  • 0
نشر
بتاريخ 13 ساعات قال Ibrahim Kadri:

تم الأمر تقريباً، ثم تظهر لي هذه المشكلة. 

The GET method is not supported for this route. Supported methods: PUT, DELETE.

لاحظ بعدما تقوم بعملية انشاء السجل ماذا تفعل:

return redirect('/team/edit');

مبدئياً في ملف التوجيهات لا يوجد توجيه مُعرف بهذا الشكل إلا:

Route::put('/team/{team}',[TeamController::class,'update']);
Route::delete('/team/{team}',[TeamController::class,'destroy']);

هاذين التوجيهين الميثود الخاصة بهم هي put للأول و delete للثاني، و أنت في هذه الحالة عندما تُعيد توجيه المُستخدم إلى رابط معين يتم طلبه بالطريقة get لذلك ظهرت هذه المُشكلة و ذلك هو شرحها.

إن كنت تريد إعادة التوجيه إلى صفحة التعديل فالرابط هو:

/team/{team}/edit

و ليس:

/team/edit

يتوجب عليك كتابة:

return redirect("/team/{$team->id}/edit");

أو إستخدام التابع back الذي يُعيد المُستخدم الى الصفحة السابقة بما أنها صفحة التعديل.

return back();
  • 0
نشر

أريد في نفس الصفحة أن أقوم بمحو اللاعب، لقد أنشأت الى جانب كل إسم form لهذه الغاية 

@foreach($team->players as $player)

            <h3>{{$player->name}}</h3>

            <h3>{{$player->number}}</h3>

            <form action="/team/{{$player->team_id}}/players/{{$player->id}}/delete" method="POST">

                @method('DELETE')

                @csrf

                <button type="submit">Delete</button>

            </form>

        @endforeach

-------------------------------------------------------------------

web.php

Route::delete('/team/{team}/players/{player}/delete',[PlayerController::class,'destroy']);

-------------------------------------------------------------------------

PlayerController 

public function destroy(Player $player ,Team $team)

    {

        $player->delete();

        return redirect("/team/{$team->id}/edit");

    }

---------------------------------------------------------------------

error message 

App\Http\Controllers\PlayerController::destroy(): Argument #1 ($player) must be of type App\Models\Player, App\Models\Team given, called in C:\xampp\htdocs\__laravel\int_crud\vendor\laravel\framework\src\Illuminate\Routing\Controller.php on line 54

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...