【问题标题】:Access data efficiently in Laravel在 Laravel 中高效访问数据
【发布时间】:2013-09-15 14:26:48
【问题描述】:

想知道是否有更好的方法通过 eloquent 轻松地从数据库中获取数据?以下是我通常使用的代码,并考虑让所有记录与shopID匹配,但在循环中过滤和访问效率低下。

$add1 = ShopMeta::where('shopId', '=', $theID)->where('metadataKey', '=', 1015)->firstOrFail();

这样做的好处是我可以使用以下而不是 foreach 循环访问成员。

$add1->metadataValue;

有没有更好的方法来完成获得所有价值的工作?

【问题讨论】:

  • 我不确定我明白了,但你想要多个shopIds?
  • @Raphael_,很抱歉让您感到困惑。我想要这个用于多个元数据密钥。谢谢
  • 然后检查我的答案。

标签: php laravel laravel-4 eloquent


【解决方案1】:

这就是Scoped Query 的用途。

【讨论】:

  • 感谢@HanLuo,但是使用这种方法是否可以更轻松地访问数据?因为我在一个控制器中有大约 20 个 metadataKey。谢谢
  • 是的,使用动态范围,您可以在范围内指定 metadataKey,使其看起来像 ShopMeta::meta($id, $key)->firstOrFail();在作用域函数中,您必须将 querybuilder 变量作为第一个参数。请参阅文档。
【解决方案2】:

只需使用whereIn

$add1 = ShopMeta::where('shopId', '=', $theID)
                ->whereIn('metadataKey', array(1015, 1016))
                ->get();

【讨论】:

  • @Raphel_,我可以知道以后如何访问该成员吗?重要的是那部分:)谢谢
  • 好吧,如果你使用get,这意味着你会得到多条记录,这意味着你需要一个foreach循环。如果您使用first(如您的示例),它就像$add1->metadataKey 一样简单。不过,根据您的问题,我不确定您是想要多条记录还是一条记录。
  • 我想单行访问数据。假设如果通过 get() 获取数据,我以后如何过滤?谢谢
猜你喜欢
  • 2011-06-10
  • 2018-06-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多