php - How to create using relationship in Eloquent model? ← (PHP)

one text

I have two tables having a relationship:

Package Table:

slug
Package_Banner_Image
Package_Type
Package_Name
Package_Price
Package_Duration
Package_Level
Package_Short_Description
Package_Description
Featured
Package_Location

Programs Table

id
package_id
day
title
description

So in my admin panel when I try to create using the relation it only adds to package_id = 1 no matter from which package you create.

My Package Model

class Package extends Model
{   
    protected $guarded = [];

    public function program() {
        return $this->hasOne(Program::class);
    }
}

My Program Model

class Program extends Model
{
    protected $guarded = [];
    public function package() {
        return $this->belongsTo(Package::class);
    }
}

Now this is the code from my PackageProgramController page for create and store:

   public function create($packageSlug) {
        $package = Package::firstorFail();
        return view('admin.create.createPackageProgram',compact('package'));
    }

    public function store(Request $request,$packageSlug) 
    {
        $packages = Package::firstOrFail();
        $data = request()->validate([
            'day' => 'required',             
            'title' => 'required',
            'description' => 'required', 
        ]);
        $packages->program()->create($data);
           switch ($request->input('action')) {
            case 'preview':
                return redirect()->intended(route('PackageProgram',$packageSlug))->with('message', 'Package Program has been added.');
                break;
            
            default:
                return redirect()->back()->with('message', 'Package Program has been added.');
                break;
            }
        }

Now finally my route looks something like this:

        Route::prefix('package-programs')->group(function() {
            Route::get('/', 'AdminVisible\PackageController@index')->name('PackagePrograms');
            Route::prefix('{packageSlug}')->group(function() {
                Route::get('/', 'AdminVisible\PackageProgramController@index')->name('PackageProgram');
                Route::get('/create', 'AdminVisible\PackageProgramController@create')->name('PackageProgram.create');
                Route::post('/create', 'AdminVisible\PackageProgramController@store')->name('PackageProgram.store');
            });
        });

Source