2016-04-12 9 views
0

私は2つのテーブルを持っています 1.コース 2.ユーザー。多くの人から多人数のリレーションシップへデータを取り出す方法

ユーザーはコースリストからコースを選択できます。ユーザーは彼のユーザーの情報を保存することができます。管理者がユーザーの詳細を確認できるようになりました。ユーザーの詳細を表示したいユーザーの詳細ページがあります。ここで

<?php 

namespace App; 

use Illuminate\Foundation\Auth\User as Authenticatable; 

class User extends Authenticatable 
{ 
    protected $table='users'; 
    protected $fillable=['name','email','phone','course_id']; 
    public function roles() 
    { 
     return $this->belongsToMany('App\Role', 'user_role', 'user_id', 'role_id'); 
    } 

    public function hasAnyRole($roles) 
    { 
     if (is_array($roles)) { 
      foreach ($roles as $role) { 
       if ($this->hasRole($role)) { 
        return true; 
       } 
      } 
     } else { 
      if ($this->hasRole($roles)) { 
       return true; 
      } 
     } 
     return false; 
    } 

    public function hasRole($role) 
    { 
     if ($this->roles()->where('name', $role)->first()) { 
      return true; 
     } 
     return false; 
    } 

    public function course() 
    { 
     return $this->hasMany('App\Course'); 
    } 
} 

はコースのモデルである:ここで

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class Course extends Model 
{ 
    protected $table='courses'; 
    protected $fillable = ['name']; 

     public function user() 
    { 
     return $this->belongsToMany('App\User','course_id'); 
    } 
} 

はコントローラです:

<?php 

namespace App\Http\Controllers; 
use App\User; 
use App\Role; 
use App\Fee; 
use App\Course; 
use Illuminate\Support\Facades\Input; 
use Illuminate\Http\Request; 

class AppController extends Controller 
{ 

    public function getStudentDetails(){ 
     // $user = User::all(); 
     $user = \DB::table('users')->where('course_id','!=',0) ->get(); 
     return view('studentDetails', compact('user')); 
    } 
} 

私だけ示さなければならないが、それはユーザーモデルである。ここ

ではありませんリストからコースを選択したユーザーのデータどうすればいい?

+1

表示するユーザーが見つかりませんでした。 "ユーザー詳細ページのリストからコースを選択した人"どういう意味ですか? – Erick

+0

- > get()/ i didntは、何をしようとしているのですか?$ user = User :: try()( 'course_id'、1) - > get(); –

+0

ユーザーはすでにコーステーブルからコースのリストを選択し、登録を完了しています。そして、このユーザーの詳細をコース名の他のページに表示し、コーステーブルでも確認する必要があることを示します。なぜなら、ユーザーテーブルでは、名前のないコースのIDのみを保存していたからです。 @Erick – Hola

答えて

2

コントローラ内のユーザーデータを取得します:ビューで

$user=User::with('courses')->first(); 

、ユーザーがコースを持っている場合は、trの前に、TBODYを使用して、この条件

<tbody> 
@foreach($user as $row) 
@if($row->courses)<tr><td></td></tr> 
@endif 
@endforeach 
</tbody> 

はその後、これを利用して、コース名にアクセスチェックコード

{{ $row->courses->name }} 
+1

私は3秒遅れていたXDはよく人を行った –

+0

幸運な私:D – shuvrow

関連する問題