2016-05-26 7 views
0

こんにちは私はLaravelを使用してサイトを開発し、FacebookのURL、Instagram URL、住所、電話番号などを追跡するようなサイトデータIDを持っていますこのモデルのこの情報はDBに名前と値として格納されているので、例の名前:facebookとvalue:[facebook url here]。私はすべてのモデルを取得してコレクションを取得し、それを私のビューに渡してループさせることができることを知っていますが、特定のモデルを使用してページの特定の部分で必要な場所を使用するように、これは、私は現在、それを持っているものです。LaravelのBLADEのコレクションから特定のモデルを取得する最も効率的な方法

私は私が私の見解にインスタンスを渡すモデル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のコレクションから特定のものを取得するには、より良い方法がありますか?おかげ

答えて

0

は、私はあなたのコントローラメソッドから配列として渡します:

$site_meta = \App\SiteMeta::lists('value', 'name'); 

return view($page_string, compact('site_meta'); 

をご使用のブレード・テンプレートでは、あなたがこれを行うことができます:

$site_meta['Facebook']; 
+0

おかげで、これは非常に良い方法のように思えます。私は投票しましたが、私がオーバーフローして以来、私は高い評価を得ています。私はそれを感謝します:) – surgiie

+0

@ surgiie喜んで私はあなたの質問に答えていると思う場合は、その "チェック"アイコンをクリックして投票がうまくいかない場合は助けることができます:) – Rifki

+0

はいそれは最も確実に私の質問に答えた:) – surgiie

関連する問題