我是拉勒维尔的新来的。我只想问问我的代码是否正确。我想在index.blade.php的集合文件夹中显示特定赋值的楼层名称和建筑面积。集合属于赋值,而赋值属于区域。
集合index.blade.php中的我的代码
@foreach ($collections as $collection)
<tr>
<td>
{{ $collection->assignment->area['floor'] }} Floor
{{ $collection->assignment->area['building'] }}
</td>
<tr>
@endforeach该代码生成一个“试图获取非对象属性”的错误。所以我要问的是正确的展示方式。
这是模型
Collection.php
public function assignment()
{
return $this->belongsTo(Assignment::class);
}Assignment.php
public function collections()
{
return $this->hasMany(Collection::class);
}
public function area()
{
return $this->belongsTo(Area::class);
}Area.php
public function assignments()
{
return $this->hasMany(Assignment::class);
}CollectionsController.php
public function index() //shows the table of the collections
{
$collections = Collection::all();
$disposals = Disposal::all();
return view('collections.index', compact('collections', 'disposals'));
}发布于 2018-07-24 05:08:24
"UPDATE":问题在于您像这样打开它的未关闭的tr标记,但是应该是
<tr><tr>:D --就是这样,检查解决方案并告诉我它是否有效。但是,看看好的一面,您的代码现在更干净、更实用了:D
链接是不好的:),尝试创建一个函数,为您提供该区域,否则.
或者您可以使用withDefault并返回相关模型的新实例。
此外,您的数据库方案应该如下所示:
集合
赋值
但以你为例,我能做到:
Collection.php
public function assignment()
{
return $this->belongsTo(Assignment::class)
->withDefault();
}Assignment.php
public function collections()
{
return $this->hasMany(Collection::class);
}
public function area()
{
return $this->belongsTo(Area::class)
->withDefault();
}Area.php
public function assignments()
{
return $this->hasMany(Assignment::class);
}CollectionsController.php
public function index() //shows the table of the collections
{
$collections = Collection::all();
$disposals = Disposal::all();
return view('collections.index', compact('collections', 'disposals'));
}也供使用:
@foreach ($collections as $collection)
<tr>
<td>
{{ $collection->assignment->area->floor }} Floor
{{ $collection->assignment->area->building }}
</td>
<tr/>
@endforeach如果一切正常,但仍然没有结果,请检查数据本身是否存在,所以请检查是否有任何赋值为集合,或任何领域的外派返回.
发布于 2018-07-24 03:26:18
你应该用这样的区域
$collection->assignment()->area()->building发布于 2018-07-24 03:38:40
以下内容中的几乎任何部分都可能返回null
$collection->assignment->area如果此特定集合不存在从集合到分配的关系,则会为其返回一个null。这将适用于所有的singular关系。
您将需要检查这些参数,找出在null情况下如何返回某些默认值,或者保证关系始终存在于DB中。
https://stackoverflow.com/questions/51489836
复制相似问题