2017-05-24 8 views
1

テーブル 'users'と 'departments'をテーブルに追加する必要があり、両方のテーブルからデータを取得してhtml形式にしたい。 ここには何かがないために機能しないコードがあります。複数のテーブルからデータを取得し、laravelの ' - > with()'を使ってhtmlに送信する方法

return view('profile.showProfile', [ 
    'selDpt' => $dpt, 
    'user' => $user 
]); 

https://laravel.com/docs/5.4/views#passing-data-to-views

答えて

2

get()メソッドは、マルチとしてデータを取得する:あなたがビューに複数の変数を渡すために、この構文を使用することができます

public function showProfileForm($id){ 
    $user = DB::table('users')->where('id','=',$id)->get(); 

    $dpt = DB::table('departments')->orderBy('department_name','asc')->get(); 
    return view('profile.showProfile')->with(['selDpt', $dpt, 'user', $user]); 
} 
+0

には{{$ dpt-> department_name}}で部署を取得できますが、{{$ user-> name}}でユーザー名を取得しようとすると、' Property [name]このコレクションインスタンス ' –

+0

には存在しませんが、'名前 'が私の' users 'テーブルに存在します。 –

+0

@UmairGulはクエリの最後のメソッドを変更しようとします。だからそれは得られないはずです。それはfirst()です。これは、1つの配列だけを取得するためです。私は自分の答えを更新しました。それを見てください。 –

0

:ここ は、コントローラのコードです次元配列。したがって、配列を1つだけ取得する場合は、クエリの最後にfirst()メソッドを使用する必要があります。だから今

$user = DB::table('users')->where('id','=',$id)->get(); 
to 
$user = DB::table('users')->where('id','=',$id)->first(); 

からクエリを変更し、あなたはarrayでデータを渡す必要があります。だからライン

return view('profile.showProfile')->with(['selDpt', $dpt, 'user', $user]); 
To 
return view('profile.showProfile')->with(['selDpt' => $dpt, 'user' => $user]); 

shoProfile.blade.phpあなたが使用またはエコーデータのため$selDpt & $user変数を使用する必要が

を変更。 うまくいくと思います。

https://laravel.com/docs/5.4/views#passing-data-to-views

+0

私は{{$ dpt-> department_name}}経由で部署を取得できますが、{{$ user-> name}}でユーザー名を取得しようとすると、 'Property [name]]が存在しないというエラーが表示されますこのコレクションのインスタンス ' –

0

で詳細をご覧くださいそれとも、PHP関数compact()を使用することができます。 http://php.net/compact

$user = DB::table('users')->where('id','=',$id)->get(); 
$dpt = DB::table('departments')->orderBy('department_name','asc')->get(); 

return view('profile.showProfile', compact('dpt', 'user')); 

あなたはあなたのビューで$user$dptを持つことになります。

関連する問題