Josel Parayno Josel Parayno - 3 years ago 223
PHP Question

how to access relationship and pass into a view in laravel

a beginner question here, how can i get the building_name column on my buildings table which has a relationship with information, i wanted to access it inside the show function and display in on the show.views? And i also wanted to know how can i call it inside the show view Please help. pls ignore this following text asldkjasdjasjdasdjaksdjasdasdasdasdasdasd.


namespace App\Http\Controllers;

use App\Information;
use App\Building;
use Illuminate\Http\Request;
use Session;

class InformationController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
//
}

/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
$buildings = new Building();
$buildings::all();
return view('create', compact('buildings'));
}

/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
$this->validate($request, array(
'building_information' => 'required',
'building_id' => 'required'
));

//store in the db
$information = new Information;

$information->building_information = $request->building_information;
$information->building_id = $request->building_id;

$information->save();

Session::flash('success', 'The information was successfully saved!');

//redirect to other page
return redirect()->route('information.show', $information->id);
}

/**
* Display the specified resource.
*
* @param \App\Information $information
* @return \Illuminate\Http\Response
*/
public function show($id)
{
$information = Information::find($id);
return view('show')->with('information', $infomation);
}



<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Building extends Model
{
public function information()
{
return $this->hasMany('App\Information');
}
}


<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Information extends Model
{
public function building()
{
return $this->belongsTo('App\Building');
}
}

Answer Source

Load the relationship too when getting the Information object:

$information = Information::with('building')->find($id);

If there are multiple buildings associated, you can loop through them in your blade view:

@foreach( $information->building as $building)
   <li>{{ $building->building_name }}</li>
@endforeach
Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download