私はすべてのモデルで有効なメソッドを持つ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のインスタンスでなければなりません。
のようなあなたの
User
モデルをカスタマイズします。したがって、あなたの 'UserRepository'クラスが' User'を必要とするとき、あなたは実際のユーザインスタンスを渡すことができます。 – Camiloあなたはあなたの誤植を気付いた?あなたの基本クラスのコンストラクタは、Illuminate \ Database \ Eleoquent \ ModelまたはIlluminate \ Database \ Eloquent \ Modelを期待していますか? – Stefan
UserモデルはIlluminate \ Database \ Eloquent \ Model'です。使用するすべてのモデルはIlluminate \ Database \ Eloquent \ Model'です。これはEloquentモデルになり、モデルを拡張します。 – lagbox