php - 如何使用 Laravel 显示两个相关表中的数据

标签 php mysql laravel

我有两个表,一个称为“事件”,另一个称为“依赖项”,一个依赖项可以有多个事件,这就是它们之间的关系,我尝试的要做的就是显示事件的数据,同时也显示与之相关的依赖项的数据。

这是我带来事件的 Controller :

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');
    }

所以我尝试在 View 中显示它:

@foreach($event->dependences as $dependence)
                <a href="#">
                {{$dependence->name}}
                </a>
                @endforeach

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

这些是数据库中的表:

enter image description here

路线没问题,但不知道问题出在哪里,希望得到您的帮助,非常感谢。

最佳答案

每个事件只有一个依赖项。所以你不需要使用foreach。

$events->dependency->name

您应该将关系名称从 dependences 更改为 dependency

class Event extends Model
{
    public function dependency()
    {
        return $this->belongsTo('App\Dependence', 'dependence_id');
    }
}

查看中:

@foreach($events as $event)
   <a href="#"> {{ $event->dependency->name }} </a>
@endforeach

关于php - 如何使用 Laravel 显示两个相关表中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52355412/

相关文章:

mysql - 损坏的插入语句

php - 登录laravel试图获取非对象的属性

Laravel Homestead 队列 :listen and queue:work only process 1 job at a time

PHP & MySQL 用户登录和权限系统

mysql - 如何创建 2 列 SQL View ?

php - 如何防止 PHP 中的 SQL 注入(inject)?

mysql - 评估执行 MySQL 事务能力的思维过程\公式

php - 使用 php 和 laravel 将数据库数据从一个循环传递到多个 div

php - MySQL将数据迁移到完全不同的数据库结构并保持关系完整

php - 需要调用 mysql_real_escape_string() 两次