2016-04-12 1 views
0

Ich habe zwei Tabellen 1. Kurs 2.User.So rufen Sie Daten von vielen zu vielen beredten Beziehungen ab

Benutzer kann Kurs aus der Liste der Kurse auswählen und mit seiner Entität kann er seine Benutzerinformationen speichern. Jetzt kann ein Admin die Benutzerdetails überprüfen. So gibt es eine Benutzerdetailseite, in der ich Benutzerdetails anzeigen möchte. Aber es ist nicht

Hier wird das Benutzermodell:

<?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'); 
    } 
} 

Hier ist der Kurs Modell:

<?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'); 
    } 
} 

Hier ist die Steuerung:

<?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')); 
    } 
} 

Ich habe nur zu zeigen, diese Benutzerdaten, die die Kurse aus der Liste ausgewählt haben. Wie könnte ich es tun?

+1

Ich habe nicht bekommen, welche Benutzer Sie zeigen möchten. "Wer hat die Kurse aus der Liste auf der Benutzerdetailseite ausgewählt?" Was meinst du? – Erick

+0

Sie haben ein wenig Platz, bevor das -> get()/ich nicht bekommen habe, was Sie versuchen zu tun, aber versuchen Sie es mit $ user = Benutzer :: wo ('course_id', 1) -> get(); –

+0

Benutzer haben bereits eine Liste von Kursen aus den Kurstabellen ausgewählt und vervollständigen die Registration. Und nun möchte ich diese Benutzerdetails einer anderen Seite mit Kursnamen zeigen und zeigen, dass ich auch mit der Kurstabelle überprüfen muss. Weil ich in der Benutzertabelle nur die ID der Kurse und nicht den Namen gespeichert habe. @Erick – Hola

Antwort

2

Get Benutzerdaten in der Steuerung:

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

Im Hinblick prüfen, ob ein Benutzer einen Kurs hat, bevor tr, diese Bedingung in tbody Verwendung

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

Dann durch Kursnamen zugreifen dies mit Code

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

Ich war 3 Sekunden zu spät XD gut gemacht Mann –

+0

haha ​​glücklich mich: D – shuvrow