使用 Laravel 将记录添加到关系存储库
Adding records to a relations repository with Laravel
我正在使用 laravel 5.5 和 andersao/l5-repository。我想在问题存储库中添加一个答案记录。
我的问题控制器
protected $repository;
public function __construct(QuestionRepository $repository)
{
$this->repository = $repository;
}
public function add_answer(AnswerAddRequest $request)
{
$this->validator->with($request->all())->passesOrFail(ValidatorInterface::RULE_CREATE);
$question = $this->repository->answer->create([
'content' => 'Answer text question',
'user_id' => Auth::user()->id
]);
return question;
}
我的问题模型
public function answer()
{
return $this->belongsTo(Answer::class, 'question_id');
}
我试过“$this->repository->answer()”
总是错误:未定义属性
我想我必须使用with()方法,但我不想把所有的内容都拿走。我只需要添加与模型相关的内容。
您应该添加这部分代码
public function answer()
{
return $this->belongsTo(Answer::class, 'question_id');
}
进入您的问题模式,而不是进入您的存储库。
Laravel Eloquent class 扩展了模型 class,它具有您正在使用的类似 belongsTo 的方法。
--- 编辑 ---
如果您想使用存储库,可以将其与 Eloquent 集成:
$this->reposotiry->find($request->input('question_id'))->answer()->create([
'content' => 'Answer text question',
'user_id' => Auth::user()->id
]);
我正在使用 laravel 5.5 和 andersao/l5-repository。我想在问题存储库中添加一个答案记录。
我的问题控制器
protected $repository;
public function __construct(QuestionRepository $repository)
{
$this->repository = $repository;
}
public function add_answer(AnswerAddRequest $request)
{
$this->validator->with($request->all())->passesOrFail(ValidatorInterface::RULE_CREATE);
$question = $this->repository->answer->create([
'content' => 'Answer text question',
'user_id' => Auth::user()->id
]);
return question;
}
我的问题模型
public function answer()
{
return $this->belongsTo(Answer::class, 'question_id');
}
我试过“$this->repository->answer()”
总是错误:未定义属性
我想我必须使用with()方法,但我不想把所有的内容都拿走。我只需要添加与模型相关的内容。
您应该添加这部分代码
public function answer()
{
return $this->belongsTo(Answer::class, 'question_id');
}
进入您的问题模式,而不是进入您的存储库。 Laravel Eloquent class 扩展了模型 class,它具有您正在使用的类似 belongsTo 的方法。
--- 编辑 ---
如果您想使用存储库,可以将其与 Eloquent 集成:
$this->reposotiry->find($request->input('question_id'))->answer()->create([
'content' => 'Answer text question',
'user_id' => Auth::user()->id
]);