我意识到这样的问题可能令人困惑且难以理解,但我会尽力解释我的问题。
我想做的事情:显示正在播放某个剧场的所有日子。
我拥有的内容:到目前为止已执行所有播放的表格,以及包含所有日期的表格(包括指向每行中相关播放的外键)
以下是我如何建立两者之间的关系:
Days.php
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Days extends Model
{
public function play()
{
return $this->belongsTo('App\Plays', 'play_id');
}
}
Plays.php
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Plays extends Model
{
public function days()
{
return $this->hasMany('App\Days');
}
}
最后,这就是我试图在视图中显示相关日期的方式:
<ul>
@foreach($play->days() as $day)
<li class="text-center text-muted">{{ $day->day }}</li>
@endforeach
</ul>
我得到的结果:没有任何<li>
标签的无序列表,好像根本没有天。
我以前在Eloquent关系方面遇到了麻烦,但从那时起它没有向我显示任何错误,我不知道到底是什么错。 此外,我将 $ play 值传递给视图的方式也是正确的,因为我引用它并在同一文件中成功地多次询问其值。
非常感谢您的时间和帮助!
答案 0 :(得分:1)
将您的班级名称更改为单数名词(Play,Day)或在hasMany关系中指定外键。 Laravel尝试从类名中猜出外键名,在这种情况下,它会尝试通过plays_id键查找天数。
答案 1 :(得分:1)
定义关系后,我们可以使用Eloquent的动态属性检索相关记录。 在循环中尝试 $ play-&gt;天而不是 $ play-&gt; days()
答案 2 :(得分:0)
最后,结果证明这是既有答案又有Dmitri的答案:
我指定了在两个模型中使用哪个外键,因为在我使用它们的任何位置重命名它们会花费很长时间:
播放模型
public function days()
{
return $this->hasMany('App\Days', 'play_id');
}
天模型
public function play()
{
return $this->belongsTo('App\Plays', 'play_id');
}
之前,我只在几天内完成了这项工作,但显然需要在两者中完成。
另外,删除括号修复了最后几个问题,谢谢你们两个!