我有一个BaseRepository类,它的方法对所有模型都有效。唯一的问题是,用户模型是从使用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()必须是一个Illuminate \ Database \ Eleoquent \ Model实例,该实例是在C:\ wamp64 \ www \ adblog \ app \ Repositories \ User \ UserRepository.ph中给出的App \ User的实例,p
我想你可以与上下文结合尝试。所以当你的UserRepository类需要一个User时,你可以传递实际的用户实例。 – Camilo
你是否记得你的错字?您的基类构造函数期望照明\数据库\ Eleoquent \ Model或Illuminate \ Database \ Eloquent \ Model吗? – Stefan
用户模型是一个'Illuminate \ Database \ Eloquent \ Model' ......你使用的所有模型都是'Illuminate \ Database \ Eloquent \ Model',这就是使它们成为雄辩模型的原因,它们扩展了模型。 – lagbox