【问题标题】:How to pass a database data instead of array in the controller如何在控制器中传递数据库数据而不是数组
【发布时间】:2023-03-26 19:25:01
【问题描述】:

在我的控制器中,它返回数组,但我想传递包名 我的控制器:

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

我的 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();
        });
    }

【问题讨论】:

  • 有一个拼写错误的'Package_Short_Description',','Package_Price' 将是'Package_Short_Description','Package_Price'
  • 您应该在提问之前给出正确的语法。如果有人尝试使用该代码,他们可能会遇到异常错误。阅读How to ask
  • 如果你想要名字,那么你就是这样Packages::where('Package_name', $package)->first();
  • 使用 STR Slug Method,让你的 url 漂亮且对 SEO 友好,在将 url 插入表时使用它,为 store slug url 创建另一个字段,以及一个敌人名称(不是蛞蝓)laravel.com/docs/7.x/helpers#method-str-slug

标签: laravel laravel-routing laravel-controller


【解决方案1】:

你可以这样做:

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 时创建另一个名为 slug 的文件,其中将保存 slug 名称:

use Illuminate\Support\Str;

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

// welcome-to-stackoverflow

【讨论】:

猜你喜欢
  • 2016-01-05
  • 2015-08-12
  • 2023-04-05
  • 1970-01-01
  • 2020-08-08
  • 2011-09-04
  • 1970-01-01
  • 2021-02-09
  • 1970-01-01
相关资源
最近更新 更多