如何在 Laravel 中使用 Eloquent 获取一对多关系的数据?实际上我遵循了Eloquent Documentation。但是我的代码返回一个空数组。这是我的工作:
数据库架构
父表:mtg_workspace与列 (mw_id[primary key], mw_name,..., mw_access)
子表:mtg_workspace_amenities与列(id[primary key]、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
模型与父模型匹配,因为它试图在通过急切加载的结果旋转时使用id
on 属性MtgWorkspace
来匹配外键MtgWorkspaceAmenities
。
边注:
MtgWorkSpaceAmenities
在定义它时,您将不得不将更多参数传递给逆关系,因为belongsTo()
想要使用调用方法名称蛇_id
加上大小写,如果没有另外告诉作为键。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句