使用 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
]);