我正在尝试实现存储库模式并使用create方法(如下所示)保存关系。
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”没有默认值是因为subscribable_id是外键,并且未在create方法中设置。
如何通过设置 subscribable_id 关联可订阅模型?我不认为在fillable属性中设置 subscribable_id 是解决问题的方法。
非常感谢。
答案 0 :(得分:0)
Laravel提供了使用相关模型实例保存关系的功能。 因此,您可以通过如下方式对关系调用create方法来保存关系:
UITableviewController