【发布时间】:2019-02-24 07:17:11
【问题描述】:
我有两个表 sbj_topics 和 difficulty_level_sbj_topic 所以,我想定义关系 b\w 他们来获取记录,所以为了建立关系我已经这样做了,
SbjTopic.php:
public function difficulty_level_sbj_topic() {
return $this->hasMany('App\DiffiLvlSbjTopic');
}
而在DiffiLvlSbjTopic.php:
protected $table = 'difficulty_level_sbj_topic';
public function sbj_topics() {
return $this->belongsTo('App\SbjTopic');
}
之后我将数据返回到视图中:
$easy = DiffiLvlSbjTopic::where(['subject_id' => $id, 'difficulty_level_id' => 2])->get();
return view('diffi_lvls.show', compact('easy'));
然后在视图中我这样做了:
@foreach($easy as $easy)
{{ $easy->sbj_topics }}
@endforeach
但是页面是空白的,当我这样做时{{ $easy->sbj_topics->sbj_topic_name }} 试图获得未定义的属性!来了。
创建关系的主要目的是显示主题名称,因为我在difficulty_level_sbj_topic 表中有外键作为sbj_topic_id,所以如果有人有任何其他想法在没有关系的情况下做到这一点会很棒。
【问题讨论】:
-
这是返回一个集合吗?
dd($easy) -
是的,它正在返回,但不是关系值
-
sbj_topic_id你的 FK 对吗?那么subject_id是什么?$easy = DiffiLvlSbjTopic::where(['subject_id' => $id, 'difficulty_level_id' => 2])->get(); -
我有一个
difficulty_level_sbj_topic表中的另一个字段。 -
@UsmanDeveloper 一个科目有很多难度级别,还是一个难度级别有很多科目?看看你的关系的顺序。此外,明确提及外键,以便 Laravel 不会自行假设任何内容。