如何使用 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
否则作为关键。
如何在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
否则作为关键。