【发布时间】:2016-07-12 23:13:17
【问题描述】:
在我的控制器中,我使用预先加载来加载所有属性及其相关文件和地址:
public function search_results(Request $request)
{
$Properties = Property::with('Residential', 'File', 'addresses')->get();
return view('result', ['results' => $Properties]);
}
然后 pass 直接进入视图。但是在 view.blade.php 我如何访问这些相关数据。
这是我的观点的一个例子,但它似乎不适用于相关数据。
@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>
这是我的房产模型:
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');
}
}
文件模型
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');
}
}
在视图中处理此类相关数据的正确方法是什么?
【问题讨论】:
-
当您说“这是我的观点的一个例子,但它似乎不适用于相关数据。”,什么不起作用?数据的显示?首先尝试
dd($Properties)并查看发送到视图的内容。 -
properties 对象包含应有的属性属性以及一个称为关系的数组,其中包含 Residential'、'File' 和 'addresses' 对象。所以看起来它被正确地发送到视图。对我不起作用的是从视图内部访问关系。 $result->title 有效并显示属性的标题,但如果我尝试加载相关的文件对象,我会收到一个致命错误。
-
我要问的是我是否使用急切加载对象及其相关对象的加载列表。您如何从刀片模板中访问这些相关对象? $result->File() as $file 正确吗?
-
我仍在寻找自己的结局。我刚刚忙于工作。我遇到了与您使用 $model->relationMethod() 相同的问题。我相信 $model->relatedModel 是要走的路。
标签: php laravel-5 laravel-5.2