php - 如何使用 Laravel 显示两个相关表中的数据
问题描述
我有两个表,一个叫做“事件”,另一个叫做“依赖”,一个依赖可以有几个事件,也就是它们之间的关系,我试图做的是显示一个事件的数据,同时也显示一个事件的数据相关的依赖。
这是我带来活动的控制器:
class WelcomeController extends Controller
{
public function evento($slug){
$event = Event::where('slug', $slug)->first();
return view('evento', compact('event'));
}
这是事件模型:
class Event extends Model
{
protected $table = 'events';
protected $fillable = [
'admin_id', 'dependence_id', 'place_id', 'name', 'slug', 'excerpt', 'body', 'status', 'file'
];
public function dependences(){
return $this->belongsTo('App\Dependence', 'dependence_id');
}
依赖模型:
class Dependence extends Model
{
protected $table = "dependences";
protected $fillable = [
'name', 'slug'
];
public function events(){
return $this->hasMany('App\Event');
}
所以我尝试在视图中显示它:
@foreach($event->dependences as $dependence)
<a href="#">
{{$dependence->name}}
</a>
@endforeach
但我收到此错误:尝试获取非对象的属性“名称”
这些是数据库中的表:
路线很好,但我不知道是什么问题,希望能得到您的帮助,非常感谢。
解决方案
您应该直接访问,如下所示:
$event->dependence->name;
因为,belongsTo
关系带来了一个项目。
还要添加一个检查对象是否为空,如下所示:
@if($event->dependece)
$event->dependence->name;
@endif
@else
如果您想以某种方式管理 null 案例,您也可以使用
推荐阅读
- input - 如何使用 SSHKit 从远程服务器请求用户输入?
- swift - UIScrollView 可以水平滚动,即使它只有一页
- c++ - C++ Primer 中的引用重新分配
- python - 为什么 QFontDialog.getFont() 总是返回相同的字体?
- c++ - 找出一天中两次之间的差异
- kubernetes - 如何为暴露多个端口的服务配置 Istio 的虚拟服务?
- javascript - 鼠标悬停时停止播放(而不是暂停)HTML5 视频
- web3 - Web3 getTransaction 返回 null
- c# - 将 Html 转换为 PDF,并带有指向另一个 PDF 中特定位置的链接
- html - 如何使文本响应并防止它在调整窗口大小时挤压