如何使用 Laravel 中的 Eloquent 获取一对多关系的数据?

How to get data for one to many relationship using Eloquent in Laravel?

如何在Laravel中使用Eloquent获取一对多关系的数据?其实我关注了Eloquent Documentation。但是我的代码 returns 我是一个空数组。这是我的作品:

数据库模式

Parent Table: mtg_workspace 列 (mw_id[主键], mw_name, ..., mw_access)

Child Table: mtg_workspace_amenities 列 (id[主键], wa_mwid, wa_name)

型号:MtgWorkspace.php

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class MtgWorkspace extends Model
{
  protected $table = 'mtg_workspace';
  public $timestamps = false;

  public function MtgWorkspaceAmenities(){
    return $this->hasMany('App\MtgWorkspaceAmenities', 'wa_mwid');
  }
}

型号:MtgWorkspaceAmenities.php

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class MtgWorkspaceAmenities extends Model
{
  protected $table = 'mtg_workspace_amenities';
  public $timestamps = false;

  public function MtgWorkspace(){
    return $this->belongsTo('App\MtgWorkspace');
  }
}

控制器:WorkspaceController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\MtgWorkspace;
use App\MtgWorkspaceAmenities;

class WorkspaceController extends Controller
{
    public function index()
   {
      $workspace = MtgWorkspace::with('MtgWorkspaceAmenities')->get();

      return $workspace;
    }
}

此处显示以下输出:

您能否尝试定义 MtgWorkspace 模型的主键(因为它不是 id):

protected $primaryKey = 'mw_id';

我认为它无法将子 MtgWorkspaceAmenities 匹配到父 MtgWorkspace 模型,因为它试图使用 MtgWorkspace 上的 id 属性来与 MtgWorkspaceAmenities 上的外键匹配,当它旋转预加载的结果时。

旁注:

在定义 MtgWorkSpaceAmenities 时,您将必须向 MtgWorkSpaceAmenities 上的反向关系传递更多参数,因为 belongsTo() 想要使用调用方法名称 snake cased,如果没有则添加 _id否则作为关键。