php - 如何正确指定 Eloquent 模型之间的关系
问题描述
我有以下型号
ReleasePackages
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class ReleasePackages extends Model
{
public $timestamps = false;
/**
*/
public function artifacts()
{
return $this->belongsToMany(
'App\Models\Artifacts',
'release_packages_artifacts',
'release_package_id',
'artifact_id'
);
}
public function created_by()
{
return $this->hasOne('App\Models\Users', 'id');
}
public function approved_by()
{
return $this->hasOne('App\Models\Users', 'id');
}
}
和Users
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Users extends Model
{
public function release_packages()
{
return $this->hasOne('App\Models\ReleasePackages', 'created_by');
}
}
现在对于每个发布包,有两列与Users
. 一个是created_by
,另一个是approved_by
。我试图通过上面的代码设置这种关系,但是当我打电话时
$packages = ReleasePackages::with(['artifacts','created_by','approved_by'])->get();
我没有得到与 的关系Users
。我在 users 表中有相应的用户 id,列名是 id。我从上面的控制器代码中得到以下响应:
#relations: array:3 [▼
"artifacts" => Collection {#265 ▶}
"created_by" => null
"approved_by" => null
]
如何更改代码以使关系正常工作?
解决方案
你的关系错了created_by()
,approved_by()
应该是belongsTo
public function created_by()
{
return $this->belongsTo('App\Models\Users', 'created_by','id');
}
public function approved_by()
{
return $this->belongsTo('App\Models\Users', 'approved_by','id');
}
推荐阅读
- ruby-on-rails - Rails 多条路线,相同的`as`
- ionic-framework - ionic 3 - 如何控制滚动速度
- java - 如何以最优雅的方式输出未知数
- python - 刽子手打印顺序正确
- matlab - 如何将文本(单元格)转换为ASCII码?(Matlab)
- vue.js - vuex getter 不会根据时间在另一个组件上更新
- javascript - Javascript 和 Wordpress 的单选按钮问题
- java - 时钟机制
- python - Wxpython 在 Windows 10 上返回 DLL 错误
- javascript - Vue组件中如何查看多个属性?