【问题标题】:Most efficient way to get a specific model from a collection in BLADE in Laravel从 Laravel 的 BLADE 中的集合中获取特定模型的最有效方法
【发布时间】:2016-09-25 00:20:00
【问题描述】:

您好,我正在使用 Laravel 开发一个站点,并且有一些站点数据 id 可以跟踪,例如 facebook url、instagram url、地址、电话号码等。此模型的此信息作为名称和值存储在DB,所以示例名称:facebook 和值:[facebook url here]。我知道我可以检索所有模型并获取一个集合,将其传递给我的视图并循环遍历它们,但我喜欢更多的控制来获取特定模型以在页面的特定部分需要它们的地方使用它。这是我目前拥有的:

我有一个模型 SiteMeta,我将一个实例传递给我的视图:

$site_meta = new \App\SiteMeta();
return view($page_string)->with('site_meta',$site_meta);

在我的 SiteMeta 模型中:

public static function get($name)
{
    return SiteMeta::where('name', '=', $name)->firstOrFail();
}

然后在我看来,我通过它的名称来获取我的特定模型:

<a target="_blank" href="{{$site_meta::get('Facebook')->value}}">
    <i class="fa fa-facebook-official data-icon" aria-hidden="true"></i>
</a>

所以我的问题是,这是最有效的方法吗?我在联系页面上的各个地方执行此操作以显示电话号码和地址等信息以及我觉得有点超载的其他站点信息,因为每次我执行 sitemeta::get('name' );

有没有更好的方法从 BLADE 的集合中获取特定的一个?谢谢

【问题讨论】:

    标签: laravel collections model eloquent


    【解决方案1】:

    我会将它作为数组从您的控制器方法传递:

    $site_meta = \App\SiteMeta::lists('value', 'name');
    
    return view($page_string, compact('site_meta');
    

    在您的刀片模板上,您可以这样做:

    $site_meta['Facebook'];
    

    【讨论】:

    • 谢谢,这似乎是一个更好的方法。我投了赞成票,但直到我有了更高的声誉,因为我是新手,所以它不会反映出来。我很感激:)
    • @surgiie 很高兴我能帮上忙,如果投票不起作用,如果您认为我的评论回答了您的问题,请单击“检查”图标 :)
    • 是的,它确实回答了我的问题 :)
    猜你喜欢
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-11
    • 2014-03-23
    • 2021-12-26
    • 1970-01-01
    • 2016-11-19
    相关资源
    最近更新 更多