首页 > 解决方案 > 在 url laravel 中显示名称而不是 id

问题描述

我只想问我如何显示公司名称而不是它的ID。当前显示为 localhost:8000/1/Belen'sChoice,所需输出为 localhost:8000/Belen'sChoice。我可以得到这个名字,但它说“试图找到 id”。

控制器

 public function show($id)
{
    $categories = Category::all();
    $businesses = Business::find($id);
    if (Auth::check()) {
        $userId = Auth::user()->id;
        $users = User::where('id', $userId)->get();
        $posts = Post::where('business_id', $businesses->id)->get()->sortByDesc('created_at');
        $supporters = Supporter::where('user_id', $userId)->get();
        $photos = Image::where('business_id', $businesses->id)->get();
        $albums = Album::where('business_id', $businesses->id)->get();

        $count = 0;

        if ($businesses->user_id != Auth::user()->id) {
            $businesses->views = $businesses->views + 1;
            $businesses->save();
        } else {
            $businesses->views = $businesses->views;
        }

        return view('businesses.index', [
            'categories' => $categories,
            'businesses' => $businesses,
            'users' => $users,
            'posts' => $posts,
            'supporters' => $supporters,
            'count' => $count,
            'images' => $photos,
            'albums' => $albums,
            ]);
    } else {
        return view('businesses.index', [
        'categories' => $categories,
        'businesses' => $businesses,
        ]);
    }
}

<a class="text-center" href='{{ url("/businessprofile/".$business->id."/".str_replace(" ", "" ,$business->name)) }}'><img class="bprof-img" src='{{ asset("storage/$business->logo") }}'>{{ $business->name }}</a>

网页.php

Route::get('/businessprofile/{id?}/{name}', 'BusinessController@show');

TIA

标签: laravel

解决方案


在您的业务迁移中占据一栏

$table->string('slug')->unique();

并以这种方式将其保存在您的控制器中

//use this at the bottom of your controller

    use Illuminate\Support\Str;
            $business = new Business;
            $business->slug = Str::slug($request->name) // whatever you request dring //creating a business row
        //and after that save it
        $business->save();

然后在您的控制器中使用 slug 找到该行

public function show($slug)
{
$business = Business::where('slug',$slug)->first();

//还有你的其他操作 }

href='{{ url("/".str_replace(" ", "" ,$business->slug))}}' 然后在您的网络中

Route::get('/{slug}', 'BusinessController@show');

推荐阅读