Я относительно новичок в Laravel, и я создал промежуточное программное обеспечение и политику для обработки объектов Eloquent, находящихся в собственности, в моем проекте.
Я сделал это, используя черту:
trait Ownable
{
public function user(){
return $this->belongsTo(User::class, 'created_by');
}
}
В моей политике я просто делаю это:
class RightPolicy
{
use HandlesAuthorization;
public function update(User $user, Ownable $ownable)
{
return $ownable->created_by == $user->id;
}
}
И мое промежуточное ПО, назначенное правильному действию в моем контроллере:
class CheckRights
{
public function __construct(Route $route, Ownable $object) {
$this->route = $route;
$this->object = $object;
}
public function handle($request, Closure $next)
{
// @TODO handle request
}
}
Затем я создал класс, используя трейт Ownable:
class Thread extends Model
{
use Ownable;
}
Однако, когда я пытаюсь запустить проект с этой структурой, инжектор зависимостей Laravel выдает ошибку:
Цель [App\Ownable] не может быть создана при сборке App\Http\Middleware\CheckRights
Есть ли способ сообщить инжектору зависимостей о создании экземпляра правильного класса (возможно, используя маршруты или что-то еще)?
Если нет, есть ли удобный способ сделать что-то еще без инжектора зависимостей, чтобы убедиться, что создан правильный класс?