Laravel 哨兵2与拉雷维尔的关系

Laravel 哨兵2与拉雷维尔的关系,laravel,laravel-4,cartalyst-sentry,Laravel,Laravel 4,Cartalyst Sentry,您好,我已经安装了sentry2软件包,我创建了一个函数,用于通过用户名获取用户,即使我喜欢登录电子邮件的主列,但它会给我带来一个错误 因此,我创建了我的模型用户,并使用\Cartalyst\Sentry\Users\Eloquent\User 然后,在本例中,我建立了与另一个模型的关系Player 因此,关系如下所示: 用户模型 class User extends \Cartalyst\Sentry\Users\Eloquent\User implements UserInterface,

您好,我已经安装了sentry2软件包,我创建了一个函数,用于通过用户名获取用户,即使我喜欢登录电子邮件的主列,但它会给我带来一个错误

因此,我创建了我的模型用户,并使用
\Cartalyst\Sentry\Users\Eloquent\User

然后,在本例中,我建立了与另一个模型的关系
Player

因此,关系如下所示:

用户模型

class User extends \Cartalyst\Sentry\Users\Eloquent\User implements UserInterface, RemindableInterface {

    public function sport() {

        return $this->hasOne('Core\Team\Player\Models\Player','player_id');
    }

}
public function user() {
        return $this->belongsTo('User','player_id');
    }
播放器型号

class User extends \Cartalyst\Sentry\Users\Eloquent\User implements UserInterface, RemindableInterface {

    public function sport() {

        return $this->hasOne('Core\Team\Player\Models\Player','player_id');
    }

}
public function user() {
        return $this->belongsTo('User','player_id');
    }
这是一个通过用户名查找用户的函数,给我一个错误:

调用未定义的方法illumb\Database\Query\Builder::sport()

按用户名获取用户的函数

public function byUsername($username) {

        $emptyModelInstance = $this->sentry->getUserProvider()->getEmptyUser();
        $myUser = $emptyModelInstance->with('sport')->where('username', '=', $username)->first();

        if ( is_null($myUser) ) {

            return false;

        } else {

            return $myUser;
        }

    }

Ps:如果我删除with()方法,它会工作得很好

老实说,我真的不清楚你想在这里实现什么,而且我从来没有使用过sentry软件包,所以这有点像暗中刺伤,但是

当您说“如果我删除with()方法,它工作得很好”时,如果您删除with(),您可以访问运动模型吗

e、 g

以上内容是否会将您的运动对象转储

如果没有,那么我怀疑发生的是Sentry使用了它自己的用户模型,而不是您定义的用户模型,因此sport()方法不可用。您可以通过添加用户并查看它是哪个类的实例来确认这一点

如果是这种情况,快速谷歌搜索建议您只需发布包的配置并在其中设置自定义用户模型


如果失败,请尝试在问题中添加大量的用户对象,这可能有助于了解发生了什么。

您的问题本来可以用更清楚的措辞表达,但我认为它不值得投下一票+1,让您重新盈利@否决票-你可以花一些时间来解释你的否决票,让它更有建设性