我有两个表,分别为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 }}
试图获取未定义的属性!。
建立关系的主要目的是显示主题名称,因为我在sbj_topic_id
表中将外键设置为difficulty_level_sbj_topic
,因此如果有人还有其他想法可以做到,而没有会很棒的关系。
答案 0 :(得分:3)
分解一下:
有了这样的理解,我可以看到您正在获得difflevels(DiffiLvlSbjTopic)。这实际上是您要传递给刀片服务器的内容。
所以首先,请通过指定外键来完成您的关系。即: 在SbjTopics模型中:
private void Button_Click(object sender, RoutedEventArgs e)
{
Run r = new Run("World");
r.Background = new SolidColorBrush(Colors.LightCyan);
//Append run to existing run
var p = flowdoc.Document.Blocks.OfType<Paragraph>().First();
p.Inlines.Add(r);
}
与此相关,您知道在'difficulty_level_sbj_topic'中您必须具有列public function difficulty_level_sbj_topic() {
return $this->hasMany('App\DiffiLvlSbjTopic', 'subject_id');
}
。
现在,在您的DiffiLvlSbjTopic模型中定义反向关系:
subject_id
将所有这些都放置在您的控制器或路由中,您需要做的就是获取DiffiLvlSbjTopic模型属性。例如:
public function sbj_topics() {
return $this->belongsTo('App\SbjTopic', 'subject_id');
}
最后,您认为:
public function index () {
$easy = DiffiLvlSbjTopic::all();
return view('diffi_lvls.show', compact('easy'));
}
就是这样。
答案 1 :(得分:2)
您的两个变量均不应为showCardIds
,而应类似于hidden
。并在里面添加一个循环
$easy