fightstarr20
fightstarr20

Reputation: 12598

Laravel - Get users name from ID

I have a Laravel 5.6 app that is logging various information into a database table, I am then displaying this data in a HTML view. I am calling this view like this...

$logs = Log::all();
return view('logreport.index')->with('logs', $logs);

The table only contains the user ID, is there a way to get the users first name and last name for the users table? Or do I need to set a relationship up?

Upvotes: 0

Views: 11351

Answers (3)

TalESid
TalESid

Reputation: 2514

You can use Eloquent relationship as answered by Ali or you can use "Joins" with your result as:

$logs = Log::join('users', 'users.id', '=', 'logs.user_id')->get();
return view('logreport.index')->with('logs', $logs);

and then access the result as:

<h1>{{ $log->first_name .' '. $log->last_name }}</h1>

Upvotes: 1

ali
ali

Reputation: 862

if the log table contain the user_id and you want to get user name you can get the user name through relation as the following:

in log model add the following method:

  public function user(){
     return $this->belongsTo('App\User','user_id','id');
 }

and then you can access the user information in view file such as firstname as the following

  @foreach($logs as $log)
       <h1>{{$log->user->first_name  .' '.$log->user->last_name }}</h1>
   @endforeach

Upvotes: 5

Etienne
Etienne

Reputation: 56

You don't need to set a relationship. Just use eloquent.

$users = User::whereIn('id', array(...))->get();

Or with query builder

$users = DB::table('users')->whereIn('id', array(...))->get();

Replace the dots by the values of your IDs

Upvotes: 1

Related Questions