无法在laravel 5.7中定义关系 - php

我有两个表,分别为sbj_topicsdifficulty_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,因此如果有人有其他想法可以做到这一点而又没有很棒的关系。

参考方案

分解如下:

SbjTopic-有很多差异级别
difflevel属于aSbjTopic

有了这样的理解,我可以看到您正在获得difflevels(DiffiLvlSbjTopic)。这实际上就是您要传递给刀片的内容。

因此首先:通过指定外键来完成您的关系。即:
在SbjTopics模型中:

public function difficulty_level_sbj_topic() {
    return $this->hasMany('App\DiffiLvlSbjTopic', 'subject_id');
}

这样,您知道在“ difficulty_level_sbj_topic”中您必须具有列subject_id
现在,在DiffiLvlSbjTopic模型中定义反向关系:

public function sbj_topics() {
    return $this->belongsTo('App\SbjTopic', 'subject_id');
}

将所有这些放置在控制器或路由中后,您所需要做的就是获取DiffiLvlSbjTopic模型属性。例如:

public function index () {
     $easy = DiffiLvlSbjTopic::all();
     return view('diffi_lvls.show', compact('easy'));
}

最后在您看来:

@foreach($easy as $difflevel)
    <div>{{ $difflevel->sbj_topics->name }} </div>
@endforeach

而已。

验证IBAN PHP - php

在设计新平台时,我们尝试集成IBAN编号。我们必须确保IBAN已经过验证,并且存储在数据库中的IBAN始终正确。那么验证数字的正确方法是什么? 参考方案 正如我在其他问题中解释的逻辑一样,我尝试自己创建一个函数。根据Wikipedia文章中解释的逻辑,在下面找到合适的功能。国家特定验证。它适合吗http://en.wikipedia.org/wiki/Int…

PHP:对数组排序 - php

请如何排序以下数组Array ( 'ben' => 1.0, 'ken' => 2.0, 'sam' => 1.5 ) 至Array ( 'ken' => 2.0, 'sam' => 1.5, 'ben' =&…

PHP strtotime困境 - php

有人可以解释为什么这在我的服务器上输出为true吗?date_default_timezone_set('Europe/Bucharest'); var_dump( strtotime('29.03.2015 03:00', time()) === strtotime('29.03.2015 04:00�…

PHP-全局变量的性能和内存问题 - php

假设情况:我在php中运行一个复杂的站点,并且我使用了很多全局变量。我可以将变量存储在现有的全局范围内,例如$_REQUEST['userInfo'],$_REQUEST['foo']和$_REQUEST['bar']等,然后将许多不同的内容放入请求范围内(这将是适当的用法,因为这些数据指的是要求自…

php-casperjs获取内部文本 - php

我正在为casperjs使用php包装器-https://github.com/alwex/php-casperjs我正在网上自动化一些重复的工作,我需要访问一个项目的innerText,但是我尚不清楚如何从casperjs浏览器访问dom。我认为在js中我会var arr = document.querySelector('label.input…