2016-07-12 1 views
0

In meinem Controller verwende ich eifrig Laden alle Eigenschaften zusammen mit ihren zugehörigen Dateien und Adressen zu laden:Laravel 5.2 zugehörige Daten in der Ansicht angezeigt

ist
public function search_results(Request $request) 
{ 


    $Properties = Property::with('Residential', 'File', 'addresses')->get(); 

    return view('result', ['results' => $Properties]); 
} 

und Pass auf den Blick geradeaus. Aber in der view.blade.php wie greife ich auf diese verwandten Daten.

Hier ist ein Beispiel meiner Ansicht, aber es scheint nicht in Bezug auf die damit verbundenen Daten zu arbeiten.

 @forelse ($results as $result) 
<div class="row"> 
    <div class="col-md-7"> 
     @foreach($result->File() as $file) 
     <a href="#"> 
      <img class="img-responsive" alt="" src="{{ URL::to('/') }}/images/properties/{{$file->filename}}"> 
     </a> 
     @endforeach 
    </div> 
    <div class="col-md-5"> 
     <h3>{{ $result->title }}</h3> 
     <h4>Subheading</h4> 
     <p>{{ $result->description }}</p> 
     <a class="btn btn-primary" href="#">View Property 
      <span class="glyphicon glyphicon-chevron-right"></span> 
     </a> 
    </div> 
</div> 

Das ist mein Eigentum Modell:

class Property extends Model 
{ 


protected $table = 'properties'; 
/** 
* The attributes that are mass assignable. 
* 
* @var array 
*/ 
protected $fillable = [ 
    'user_id', 'is_for_sale','available','title', 'description','price','date_available' 
]; 

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


public function Residential() 
{ 
    return $this->hasOne('App\Residential'); 
} 

/** 
* The Addresses that belong to the properties. 
*/ 
public function addresses() 
{ 
    return $this->belongsToMany('App\Address'); 
} 


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

die Datei Modell

class File extends Model 
    { 

protected $table = 'files'; 
/** 
* The attributes that are mass assignable. 
* 
* @var array 
*/ 
protected $fillable = [ 
    'property_id', 'file_type_id','filename','system_filename', 'is-deleted' 
]; 


public function Property() 
{ 
    return $this->belongsTo('App\Property'); 
} 


public function File_Type() 
{ 
    return $this->belongsTo('App\File_types'); 
} 
} 

Was ist der richtige Weg, diese Art von verwandten Daten in einer Ansicht zu behandeln?

+0

Wenn Sie sagen "Hier ist ein Beispiel meiner Ansicht, aber es scheint nicht in Bezug auf die verwandten Daten zu funktionieren.", Was funktioniert nicht? Die Anzeige der Daten? Versuchen Sie zunächst, 'dd ($ Properties)' zu sehen und sehen Sie, was an die Ansicht gesendet wird. –

+0

Das Properties-Objekt enthält Eigenschaftenattribute, wie es sollte, und auch ein Array namens relations, das die Objekte Residential ',' File 'und' addresses 'enthält. Es sieht also so aus, als würde es korrekt zur Ansicht gesendet. Was für mich nicht funktioniert, ist der Zugriff auf die Beziehungen aus der Sicht. $ result-> title funktioniert und zeigt den Titel der Eigenschaft, aber wenn ich versuche, das zugehörige Dateiobjekt zu laden, erhalte ich einen fatalen Fehler. – user794846

+0

Was ich frage ist, wenn ich eifrig die Ladeliste von Objekten und ihren verwandten Objekten laden möchte. Wie greifen Sie auf diese verwandten Objekte innerhalb einer Blade-Vorlage zu? Ist $ result-> File() als $ file korrekt? – user794846

Antwort

0

Für Ihre

@foreach($result->File() as $file)

Änderung es

@foreach($result->File as $file).

Die $result->File() lädt die gleichen Beziehungen wie Sie mit Ihrer search_results() Methode in der Steuerung.