我有一個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