Laravel路由模型绑定返回该帖子的错误所有者

问题描述

早上/下午/晚上好!

我有2个模型,用户和帖子

User.PHP

public function getRouteKeyName()
{
    return 'user_name';
}

public function posts()
{
    return $this->hasMany(Post::class,'by_id','id');
}

我的用户表中有两条记录

|--------------------------------------------|
|   id   |   user_name   |   ...   |   ...   |
|--------------------------------------------|
|   1    |   megamanx    |   ...   |   ...   |  
|   2    |   black_zero  |   ...   |   ...   | // Edited

Post.PHP

public function getRouteKeyName()
{
    return 'slug';
}

public function by()
{
    return $this->belongsTo(User::class,'id');
}

我在帖子表中有一条记录

|----------------------------------------------------|
|   id   |   by_id   |   slug              |   ...   |
|----------------------------------------------------|
|   1    |   1       |   test-first-post   |   ...   |  

在我的路线上

Route::group(['prefix' => '{user}',function () {

    Route::get('/',function (User $user) {
        return View::make('user.index',compact('user'));
    });

    Route::get('/{post}',function (User $user,Post $post) {
        return View::make('post.index',compact('user','post'));
    });
});

如您所见,我对用户user_name和帖子slug使用路由模型绑定

因此,当我访问路线时,例如:

127.0.0.1:8000/megamanx/test-first-post
// it return the correct owner

megamanx用户是帖子的所有者(test-first-post)

但是,当我尝试将用户参数传递给其他用户时,例如:

127.0.0.1:8000/black_zero/test-first-post
// hey you don't own that post!

所有者的帖子名称更改为black_zero,但他不拥有该帖子

那么如何解决呢?我想要当用户尝试将user_name更改为其他内容时,返回404。因为只有用户megamanx拥有帖子test-first-post

我一直对批评家开放,因为我想成为一个更好的开发人员,如果以上方法(路线,模型等)有任何错误,请纠正我!,谢谢(·∀·)ノ>

对不起,英语不好( ̄▽ ̄ *)ゞ

谢谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...