Laravel通过关系作为请求参数

时间:2020-06-24 10:21:17

标签: laravel

假设我们在控制器中有类似的东西

if ($request->input('with')) {
  $query->with($request->input('with'));
}

所以现在我们的前端可以动态地仅请求所需的关系,像这样

GET http://example.com/controller?with[]=some_relation&with[]=another_relation

我看到的唯一安全性问题是,如果我们需要隐藏某些关系(根据我们的隐私权政策),那么我们可以为该关系另外实现“ $ fillable”之类的东西。

但是还有其他安全问题吗?这是个好习惯吗?

1 个答案:

答案 0 :(得分:0)

我要做的是在每个模型中设置一组关系。

 public const $relationships = ['comment', 'categories'];

然后在我的控制器中,我将检查参数并仅获得有效关系

    $included = $request->has('included') ? $request->included : [];

    if(!empty($included)) {
        $included = array_intersect(explode(',', $included), Quotation::relationships);
    }

然后渴望像往常一样加载结果。任何建议或改进都表示赞赏。

  $data = Quotation::with($included)->get()