首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >非目标Laravel 5,4的性质研究

非目标Laravel 5,4的性质研究
EN

Stack Overflow用户
提问于 2018-07-24 02:57:49
回答 4查看 818关注 0票数 0

我是拉勒维尔的新来的。我只想问问我的代码是否正确。我想在index.blade.php的集合文件夹中显示特定赋值的楼层名称和建筑面积。集合属于赋值,而赋值属于区域。

集合index.blade.php中的我的代码

代码语言:javascript
运行
复制
@foreach ($collections as $collection)
  <tr>    
     <td>
         {{ $collection->assignment->area['floor'] }} Floor
         {{ $collection->assignment->area['building'] }}
     </td> 
  <tr>
@endforeach

该代码生成一个“试图获取非对象属性”的错误。所以我要问的是正确的展示方式。

这是模型

Collection.php

代码语言:javascript
运行
复制
public function assignment()
{
    return $this->belongsTo(Assignment::class);
}

Assignment.php

代码语言:javascript
运行
复制
public function collections()
{
    return $this->hasMany(Collection::class);
}
public function area()
{
    return $this->belongsTo(Area::class);
}

Area.php

代码语言:javascript
运行
复制
public function assignments()
{
    return $this->hasMany(Assignment::class);
}

CollectionsController.php

代码语言:javascript
运行
复制
public function index() //shows the table of the collections
{
    $collections = Collection::all();
    $disposals = Disposal::all();
    return view('collections.index', compact('collections', 'disposals'));
}
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-07-24 05:08:24

"UPDATE":问题在于您像这样打开它的未关闭的tr标记,但是应该是<tr><tr> :D --就是这样,检查解决方案并告诉我它是否有效。但是,看看好的一面,您的代码现在更干净、更实用了:D

链接是不好的:),尝试创建一个函数,为您提供该区域,否则.

或者您可以使用withDefault并返回相关模型的新实例。

此外,您的数据库方案应该如下所示:

集合

  • id
  • assignment_id

赋值

  • id
  • area_id

laravel withDefault doc

但以你为例,我能做到:

Collection.php

代码语言:javascript
运行
复制
public function assignment()
{
    return $this->belongsTo(Assignment::class)
        ->withDefault();
}

Assignment.php

代码语言:javascript
运行
复制
public function collections()
{
    return $this->hasMany(Collection::class);
}
public function area()
{
    return $this->belongsTo(Area::class)
        ->withDefault();
}

Area.php

代码语言:javascript
运行
复制
public function assignments()
{
    return $this->hasMany(Assignment::class);
}

CollectionsController.php

代码语言:javascript
运行
复制
public function index() //shows the table of the collections
{
    $collections = Collection::all();
    $disposals = Disposal::all();
    return view('collections.index', compact('collections', 'disposals'));
}

也供使用:

代码语言:javascript
运行
复制
@foreach ($collections as $collection)
  <tr>    
     <td>
         {{ $collection->assignment->area->floor }} Floor
         {{ $collection->assignment->area->building }}
     </td> 
  <tr/>
@endforeach

如果一切正常,但仍然没有结果,请检查数据本身是否存在,所以请检查是否有任何赋值为集合,或任何领域的外派返回.

票数 1
EN

Stack Overflow用户

发布于 2018-07-24 03:26:18

你应该用这样的区域

代码语言:javascript
运行
复制
$collection->assignment()->area()->building
票数 0
EN

Stack Overflow用户

发布于 2018-07-24 03:38:40

以下内容中的几乎任何部分都可能返回null

代码语言:javascript
运行
复制
$collection->assignment->area

如果此特定集合不存在从集合到分配的关系,则会为其返回一个null。这将适用于所有的singular关系。

您将需要检查这些参数,找出在null情况下如何返回某些默认值,或者保证关系始终存在于DB中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51489836

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档