Php 在Laravel中高效地访问数据

Php 在Laravel中高效地访问数据,php,laravel,laravel-4,eloquent,Php,Laravel,Laravel 4,Eloquent,想知道有没有更好的方法可以通过eloquent轻松地从数据库中获取数据?下面是我通常使用的代码,我想让所有记录都与shopID匹配,但在循环中过滤和访问效率会很低 $add1 = ShopMeta::where('shopId', '=', $theID)->where('metadataKey', '=', 1015)->firstOrFail(); 这样做的好处是,我可以使用以下内容而不是foreach循环访问成员 $add1->metadataValue; 有没有更好

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

$add1 = ShopMeta::where('shopId', '=', $theID)->where('metadataKey', '=', 1015)->firstOrFail();
这样做的好处是,我可以使用以下内容而不是foreach循环访问成员

$add1->metadataValue;

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

这就是目的。

这就是目的。

只要使用一个
,其中

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

只需使用一个
,其中

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

我不确定我是否得到了它,但你想要多个
shopId
s?拉斐尔,很抱歉把你弄糊涂了。我想要多个metadataKey。谢谢你的回答。我不确定我是否得到了它,但是你想要多个
shopId
s?@Raphael_297;,很抱歉让你困惑。我想要多个metadataKey。谢谢。谢谢@HanLuo,但是用这种方法有没有可能更容易地访问数据?因为我在一个控制器中有大约20个metadataKey。感谢使用动态作用域,您可以在作用域中指定metadataKey,使其看起来像ShopMeta::meta($id,$key)->firstOrFail();在scope函数中,必须将querybuilder变量作为第一个参数。请参阅文档。谢谢@HanLuo,但是使用此方法是否可以更轻松地访问数据?因为我在一个控制器中有大约20个metadataKey。感谢使用动态作用域,您可以在作用域中指定metadataKey,使其看起来像ShopMeta::meta($id,$key)->firstOrFail();在scope函数中,必须将querybuilder变量作为第一个参数。请参阅文档。@Raphel_,我可以知道以后如何访问该成员吗?重要的是这一部分:)ThxWell,如果您使用
get
,这意味着您将获得多个记录,这意味着您将需要一个foreach循环。如果您首先使用
(如您的示例中所示),它与
$add1->metadataKey
一样简单。但是,从你的问题来看,我不确定你是想要多条记录还是一条记录。我想在一行中访问数据。比方说,如果通过get()获取数据,我以后如何进行筛选?Thx@Raphel_,我可以知道以后如何访问该成员吗?重要的是这一部分:)ThxWell,如果您使用
get
,这意味着您将获得多个记录,这意味着您将需要一个foreach循环。如果您首先使用
(如您的示例中所示),它与
$add1->metadataKey
一样简单。但是,从你的问题来看,我不确定你是想要多条记录还是一条记录。我想在一行中访问数据。比方说,如果通过get()获取数据,我以后如何进行筛选?谢谢