Hola
Hola

Reputation: 2233

How to retrieve data from many to many Eloquent Relationships

I have two tables 1. Course 2.User.

User can choose course from list of courses and with his entity he can save his user information. Now an Admin can check the user details.so, there is a user details page in there i want to show user details. But it's not

Here is the User Model:

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

Here is the Course Model:

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

Here is the controller:

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

I have to show only those users data who have selected the courses from list. How could i do it?

Upvotes: 0

Views: 63

Answers (1)

Md Rashedul Hoque Bhuiyan
Md Rashedul Hoque Bhuiyan

Reputation: 10631

Get User data in controller:

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

In view, check if a user has a course , before tr, in tbody use this condition

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

Then access course name by using this code

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

Upvotes: 2

Related Questions