2016-03-31 20 views
0

私はLaravelに、とりわけ既定のWordpressテーブルからデータを取得するアプリケーションを構築することを教えています。よくわからないベストプラクティスの質問にぶつかってきました取り組む方法。Eloquent&Laravelを使用して特定の列にアクセスする

私はこのようになりますユーザーデータベースのための非常に単純なモデル持っている:

namespace App; 
use Illuminate\Database\Eloquent\Model; 
class User extends Model 
{ 
    public $table='wp_users'; 
    protected $primaryKey='user_id'; 
} 

をそして私はその私ができる私のコントローラで$users = User::all();のような行を使用して、配列にそれを取得することができますよそれから、私の見解をいくつかの異なる方法で送ってください。

Now;ベストプラクティスに関する私の質問は、特定の列の複数の値にアクセスすることです(または)。

いいえ、表示されたテキストとしてデータベースからdisplay_nameを含むドロップダウンリストを作成し、フォームに渡されるオプション値としてuser_loginを作成したいとします。

「古き良き」の日で、私は、HTMLの該当する場所に<?php echo $whatever; ?>をプッシュし、それは非常に醜いソリューションですforeachの文のようなものでこれを行うことができます。私はちょうどこのようなものを見て...意味:

雄弁を使用して
<?php foreach ($users as $key => $value) { 
    echo "<option value='" . $key . "'>" . $value['name'] . "</option>"; 
} ?> 

、私はForm::select('size', array('L' => 'Large', 'S' => 'Small'))ような何かを行うことができ、私はこの文に配列を渡す方法があります確信しているが、それはまさに私の問題です。 ..私はちょうどそれを行う方法を把握していないようです。 Formステートメントに、最初のエントリには$users[0]->display_name、2番目には$users[1]->display_nameなどと指定するにはどうすればよいですか?お使いのコントローラで

+0

ビューにデータを渡すと配列を反復処理し、ビュー – geckob

答えて

0

$users = User::get()->pluck('name','user_id'); 
フォームで

Form::select('size', $users) 

を行う。これは単にあなたのためにあなたのドロップダウンリストを構築します。あなたと仮定すると

+0

それが動作する場合は(私は今テストすることができないよ)上でそれを表示するために、ブレードを使用し、これは次のようになりますはるかにエレガントなソリューションですが、 'Form'ステートメントは' $ users'の使い方をどのように知っていますか? 2つの列があるので、自動的に最初の列をオプション名として、2番目の列を表示テキストとして選択しますか?これに関するドキュメントを見つけることができません... –

+1

最初の列を値として、2番目の列をキーとして選択します。これは自動的にこれを行います – oseintow

0

は、ビューにデータを渡され、テンプレートエンジンとしてのブレードを使用します。

<form method="POST" action="" id="form"> 
    @foreach($formFields as $key => $val) 
     <input name="{{ $key }}" value=" {{ $val }}"> 
    @endforeach 
</form> 
+0

興味があるだけでなく、* all *キーとそれに対応する値を使用するので、これはうまくいかないでしょう。しかし、これはコントローラで行う必要があります私は完全な$ users配列を使用する代わりに使用したいだけの2つの列を渡しますか? –

0

あなたは集団からそれをインストールすることによって、古いLaravelフォームパッケージを使用することができます - あなたが持ってたらhttps://laravelcollective.com/

これをインストールすると、以下を使用して、各選択オプションの値としてuser_idを使用し、オプションテキストとしてdisplay_nameを使用する配列を生成することができます。

​​

はその後、ブレード・テンプレートで:

{!! Form::select('users', $users) !!} 
+0

もちろん、私の最初の記事に書かれているように、Formパッケージがすでに稼働していますが、コード内で配列が渡されるのは混乱しています。対応する値/表示フィールドに 'display_name'と' user_id'を使用する方法はどのように知っていますか? –

+0

@BrekiTomasson Form :: selectは、キーがオプションの値で、値がテキストの配列形式に基づいて自動的にオプションを生成するためです。 User :: lists()メソッドは配列を返し、2番目のパラメータ(この場合は 'user_id')を使用して、その配列のキーとして何を使用するかを指定します。 –

+0

Gotcha。あなたの '$ user'定義は' User :: get() - > pluck( 'name'、 'user_id');とはどのように違うのですか? –

関連する問題