扩展用户模型哨兵laravel包的雄辩关系

时间:2018-10-21 09:59:54

标签: php laravel-5 eloquent cartalyst-sentinel

我有一个扩展的类User

<?php

namespace App;

class User extends \Cartalyst\Sentinel\Users\EloquentUser
{
    public function chalets(){
        return $this->hasMany('App\Chalet');
    }
}

我有木屋课程

class Chalet extends Model
{
    protected $fillable = [
        'name', 'description',
    ];
public function user(){
        return $this->belongsTo('App\User');
    }
}

我有按用户添加木屋的方法:

public function postCreateChalet(Request $request){
        $chalet = new Chalet([
            'name' => $request->input('name'),
            'description' => $request->input('description')
        ]);
        Sentinel::getUserRepository()->setModel('App\User');
        $user = Sentinel::getUser();
        $user->chalets()->save($chalet);
        return ('chalet has created');
    }

及其给我一个错误:

BadMethodCallException
Call to undefined method Cartalyst\Sentinel\Users\EloquentUser::chalets()

扩展User类是正确的方法吗?

我一直在寻找扩展User类的方法。我发现了这个问题:Model Inheritance in Laravel并没有帮助我。

我正在使用Laravel 5.7

1 个答案:

答案 0 :(得分:1)

您收到的异常表明Sentinel仍在引用默认股票Sentinel的 EloquentUser 模型。确保使用发布的Sentinel配置指向您的扩展用户模型。

  1. 运行以下命令

    php artisan vendor:publish --provider="Cartalyst\Sentinel\Laravel\SentinelServiceProvider"
    
  2. 在'config \ cartalyst.sentinel.php'中打开已发布的配置文件

  3. 从以下内容进行修改: 'users' => [ 'model' => 'Cartalyst\Sentinel\Users\EloquentUser', ], 至: 'users' => [ 'model' => 'App\User', ],

有关更多信息,请参阅https://github.com/cartalyst/sentinel/wiki/Extending-Sentinel

通过config配置后,您将不需要以下行:

Sentinel::getUserRepository()->setModel('App\User');