php 与扩展用户模型Sentinel Laravel包的雄辩关系

mbjcgjjk  于 2023-03-07  发布在  PHP
关注(0)|答案(2)|浏览(106)

我有一个类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');
    }
}

我有方法添加chalet由用户:

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

fgw7neuy

fgw7neuy1#

您收到的异常表明Sentinel仍在引用默认库存Sentinel的EloquentUser模型。请确保您使用发布的Sentinel配置指向您的扩展用户模型。
1.运行以下命令

php artisan vendor:publish --provider="Cartalyst\Sentinel\Laravel\SentinelServiceProvider"

1.打开"config\cartalyst.sentinel.php"中的已发布配置文件
1.从以下内容修改:'users' => [ 'model' => 'Cartalyst\Sentinel\Users\EloquentUser', ],至:'users' => [ 'model' => 'App\User', ],
有关详细信息,请参阅https://github.com/cartalyst/sentinel/wiki/Extending-Sentinel
通过config配置后,您将不需要下面的行:

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

yhxst69z2#

我知道这是一个老线索,但对我来说,我需要添加的特点:

use Authenticatable;

Sentinel正在使用的User类(如上所述)。

相关问题