【发布时间】:2019-12-11 10:58:42
【问题描述】:
我正在尝试实现存储库模式并使用 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);
}
我的问题General error: 1364 Field 'subscribable_id' doesn't have a default value是因为subscribable_id是外键,没有在create方法中设置。
如何关联可订阅模型,设置 subscribable_id?我不认为在可填充属性中设置 subscribable_id 是解决这个问题的方法。
非常感谢。
【问题讨论】:
标签: php laravel laravel-5 eloquent