Я пытаюсь реализовать шаблон репозитория и сохранить связь, используя метод создания, как показано ниже.
abstract class EloquentRepository implements Repository {
public function create($data)
{
return $this->model->create($data);
}
}
В моем контроллере я ввел репозиторий:
public function __construct(SubscriberRepository $subscriberRepository,
SubscribableRepository $subscribableRepository)
{
$this->subscriberRepository = $subscriberRepository;
$this->subscribableRepository = $subscribableRepository;
}
Мой метод магазина выглядит следующим образом:
public function store(CreateSubscriberRequest $request): JsonResponse
{
$subscribable = $this->subscribableRepository->findByIdentifier($request->input('type'))
->firstOrFail();
$attributes = [
'name' => $request->input('name'),
'email' => $request->input('email')
];
$subscriber = $this->subscriberRepository->create($attributes);
}
Модель подписчика
public function subscribable()
{
return $this->belongsTo(Subscribable::class, 'subscribable_id');
}
Модель с подпиской
public function subscribers()
{
return $this->hasMany(Subscriber::class);
}
Моя проблема Общая ошибка: 1364 Поле 'subscribable_id' не имеет значения по умолчанию потому что subsable_id является внешним ключом и не задано в методе создания.
Как мне соотнести модель с подпиской, установив subscribable_id ? Я не думаю, что установка subscribable_id в свойстве fillable является подходящим способом для этого.
Большое спасибо заранее.