1

拡張するクラス 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 クラスを拡張する方法を探しました。私はこの質問を見つけました:Laravelのモデル継承は私を助けませんでした。

私はLaravel5.7を使用しています

4

1 に答える 1

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');
于 2018-12-24T08:01:06.393 に答える