【问题标题】:building eager loading query with a variable使用变量构建急切加载查询
【发布时间】:2016-09-06 02:36:43
【问题描述】:

目前正在构建 API。使用流明和分形。分形的一个很酷的事情是能够通过查询字符串传递包含,例如 ?foo=bar,mar,par

但现在在构建我的查询时,我想利用 Eloquents 急切加载。所以理想情况下,如果使用上面的例子,这个查询将是:

->with(['bar','mar','par'])

但是我摸索着如何从我的查询字符串中获取到构建该查询。 显然,我正在通过验证器传递它,以确保传递的任何内容都是合法的,所以如果有人通过了“par123”,那将失败,因为我没有那张桌子。

我无法传递以下内容:

$example = 'bar','mar','par';
->with([$example]);

关于如何在不手动检查每个传递的参数并为每个场景构建唯一查询的情况下构建该查询的任何想法......

【问题讨论】:

  • 我建议查看 dingo/api,因为它会自动为您处理 league/fractal 急切加载
  • 看不到那个包是怎么做到的...

标签: laravel eloquent lumen


【解决方案1】:

免责声明:我从未使用过分形,但此解决方案适用于 Lumen。

$params = $request->input('foo'); // will give you 'bar,mar,par'

现在您需要将此字符串拆分为一个字符串数组,以便您的各种模型进行预加载

$paramArray = explode(',', $params); // ['bar', 'mar', 'par']

$results = Model::find('foo')->with($paramArray)->get();

【讨论】:

  • hmm 试过了,还是不行……让我再看看。
  • 我没有通过代表关系的确切方法。我只是使用一个公共变量 xyz 无论如何。必须准确。现在它起作用了!谢谢老兄。
猜你喜欢
  • 1970-01-01
  • 2023-03-25
  • 2018-12-05
  • 1970-01-01
  • 2013-06-18
  • 2016-06-15
  • 2014-11-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多