Laravel 如何使用slug或id创建路由

Laravel 如何使用slug或id创建路由,laravel,routes,difference,Laravel,Routes,Difference,如何通过路由使用ID或slug调用用户配置文件? 如果用户调用自己的配置文件,它应该能够通过slug profile/{slug}打开它 如果访问的配置文件的隐私为3,则只能通过ID.profile/{ID}访问该配置文件 在另一种隐私中,它应该只能通过slug调用 我尝试了代码,但不幸的是它不起作用 public function index($param) { $user = User::firstOrFail(); if(Auth::user() === $user){

如何通过路由使用ID或slug调用用户配置文件? 如果用户调用自己的配置文件,它应该能够通过slug profile/{slug}打开它 如果访问的配置文件的隐私为3,则只能通过ID.profile/{ID}访问该配置文件 在另一种隐私中,它应该只能通过slug调用

我尝试了代码,但不幸的是它不起作用

public function index($param)
{
    $user = User::firstOrFail();

    if(Auth::user() === $user){
        $user = User::where('slug', $param)->first();
    }elseif ($user->profile->privacy === 3){
        $user = User::where('id', $param)->first();
    }else{
        $user = User::where('slug', $param)->first();
        }
}
路线:

Route::get('/profile/{param}', 'Profile\ProfilesController@index')->name('profile');

$param
参数将接收用户id或slug,请尝试以下代码:

public function index($param)
{
    $user = User::where('slug', $param)->first();

    if($user)
    {
        if($user->profile->privacy === 3)
        {
            // This user profile cannot access via slug
        }
        // User Accessible via slug
    }
    else
    {
        $user = User::where('id', $param)->first();
    }
}

用户自己的配置文件和隐私级别不在3个配置文件中可以通过slug访问,因此您不想检查用户是否正在访问自己的配置文件。

$param
参数将接收用户id或slug,因此请尝试以下代码:

public function index($param)
{
    $user = User::where('slug', $param)->first();

    if($user)
    {
        if($user->profile->privacy === 3)
        {
            // This user profile cannot access via slug
        }
        // User Accessible via slug
    }
    else
    {
        $user = User::where('id', $param)->first();
    }
}

用户自己的配置文件和隐私级别不在3个配置文件中都可以通过slug访问,因此您不想检查用户是否正在访问自己的配置文件。

$User
将永远不会
==auth::User()
(精确匹配),它们是单独的实例。它们可能对您表示相同的实体,但它们是不同的实例<代码>$user可能
==Auth::user()
<代码>==!====
$user
永远不会
==Auth::user()
(精确匹配),它们是独立的实例。它们可能对您表示相同的实体,但它们是不同的实例<代码>$user可能
==Auth::user()
<代码>==!====