Как передать в контроллер данные базы данных вместо массива - PullRequest
0 голосов
/ 07 августа 2020

В моем контроллере в finorfail он возвращает массив, но вместо этого я хочу передать имя пакета Мой контроллер:

    public function package($package){
        $package = Packages::findOrFail($package);
        return view('pages.package',[
            'package' => $package,
        ]);
    }

My we. php:

Route::prefix('/packages')->group(function() {
    Route::get('/', 'PackageController@packages')->name('package.show');
    Route::get('/{package}', 'PackageController@package')->name('package.show');
});

Моя модель:

class Packages extends Model
{
    protected $table = 'packages';

    protected $fillable = ['Package_Banner_Image','Package_Image','Package_Type','Package_Name','Package_Short_Description','Package_Price','Package_Duration','Package_Level','Package_Location'];
}

Я хочу передать PackageName вместо массива чисел введите описание изображения здесь Итак, вместо 1 я хочу, чтобы это было имя пакета в URL-адресе

Моя миграция:

   public function up()
    {
        Schema::create('pages', function (Blueprint $table) {
            $table->increments('id');
            $table->string('title')->nullable();
            $table->string('slug')->nullable();
            $table->text('description')->nullable();
            $table->string('image')->nullable();
            $table->string('meta_title')->nullable();
            $table->text('meta_description')->nullable();
            $table->integer('main')->nullable();
            $table->string('publish')->nullable();
            $table->timestamps();
        });
    }

1 Ответ

1 голос
/ 07 августа 2020

Вы можете сделать это так:

public function package($package)
{
   $package = Packages::where('Package_name', $package)->first();
  
    if(empty($package)) { 
      return abort(404); // if $package is empty, it will return 404
    } 

    return view('pages.package',[
         'package' => $package,
    ]);
}

Метод Str :: slug генерирует дружественный URL "slug" из заданной строки, поэтому при сохранении Package_name make другой файл с именем slug, в котором будет сохранено имя slug:

use Illuminate\Support\Str;

$slug = Str::slug('welcome to stackoverflow', '-');

// welcome-to-stackoverflow
...