2017-12-02 25 views
0

私はすべてのモデルで有効なメソッドを持つBaseRepositoryクラスを持っています。唯一の問題は、UserモデルがIlluminate \ Foundation \ Auth \ Userの使用から派生していることです。したがって、コンストラクターにIlluminate \ Database \ Eleoquent \ Modelのインスタンスが必要なため、タイプエラーが発生します。どうすれば問題を解決できますか?ここでLaravel 5.5:ユーザーモデルへの依存性注入

は私UserRepository.phpです:

namespace App\Repositories\User; 

use App\Model\User; use App\Repositories\Base\BaseRepository; 

class UserRepository extends BaseRepository { 

public function __construct(User $user) 
{ 
parent::__construct($user); 
} 

} 

BaseRepository.php

namespace App\Repositories\Base; 

use App\User; 
use Illuminate\Database\Eleoquent\Model; 

class BaseRepository { 

public function __construct (Model $model) { 
    $this->model = $model; 
} 

public function all() { 

    return $this->model->orderBy('id','desc')->get(); 


} 


} 

これはエラーです:タイプエラー:アプリケーション\リポジトリ\ベース\ BaseRepositoryに渡さ 引数1: :__ construct()は、C:\ wamp64 \ www \ adblog \ app \ Repositories \ User \ UserRepository.ph pで呼び出されたApp \ UserのインスタンスであるIlluminate \ Database \ Eleoquent \ Modelのインスタンスでなければなりません。

+0

のようなあなたのUserモデルをカスタマイズします。したがって、あなたの 'UserRepository'クラスが' User'を必要とするとき、あなたは実際のユーザインスタンスを渡すことができます。 – Camilo

+0

あなたはあなたの誤植を気付いた?あなたの基本クラスのコンストラクタは、Illuminate \ Database \ Eleoquent \ ModelまたはIlluminate \ Database \ Eloquent \ Modelを期待していますか? – Stefan

+0

UserモデルはIlluminate \ Database \ Eloquent \ Model'です。使用するすべてのモデルはIlluminate \ Database \ Eloquent \ Model'です。これはEloquentモデルになり、モデルを拡張します。 – lagbox

答えて

1

私はあなたが文脈を結合して試みることができると思います。この

use Illuminate\Auth\Authenticatable; 
use Illuminate\Database\Eloquent\Model; 
use Illuminate\Auth\Passwords\CanResetPassword; 
use Illuminate\Foundation\Auth\Access\Authorizable; 
use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract; 
use Illuminate\Contracts\Auth\Access\Authorizable as AuthorizableContract; 
use Illuminate\Contracts\Auth\CanResetPassword as CanResetPasswordContract; 

class User extends Model implements 
    AuthenticatableContract, 
    AuthorizableContract, 
    CanResetPasswordContract 
{ 
    use Authenticatable, Authorizable, CanResetPassword; 
} 
+0

ありがとう! これはIlluminate \ Foundation \ Auth – sammy

+0

の内容です。ユーザーモデルをEloquent \ Modelに拡張し、Illuminate \ Foundation \ Auth \ Userにしないでください。 –

+0

しかし、私は認証が必要です。これは正常に動作します。 – sammy