首页 > 解决方案 > 如何使用 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

但我收到此错误:尝试获取非对象的属性“名称”

这些是数据库中的表:

在此处输入图像描述

路线很好,但我不知道是什么问题,希望能得到您的帮助,非常感谢。

标签: phpmysqllaravel

解决方案


您应该直接访问,如下所示:

$event->dependence->name;

因为,belongsTo关系带来了一个项目。

还要添加一个检查对象是否为空,如下所示:

@if($event->dependece)
    $event->dependence->name;
@endif

@else如果您想以某种方式管理 null 案例,您也可以使用


推荐阅读