Php 如何正确指定雄辩模型之间的关系
我有以下型号Php 如何正确指定雄辩模型之间的关系,php,laravel,eloquent,model,Php,Laravel,Eloquent,Model,我有以下型号 ReleasePackages <?php namespace App\Models; use Illuminate\Database\Eloquent\Model; class ReleasePackages extends Model { public $timestamps = false; /** */ public function artifacts() { return $this->belo
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');
}
}
现在,对于每个发布包,有两列与用户相关。一个是由
创建的,另一个是由批准的。我试图通过上面的代码设置这个关系,但是当我调用
$packages=ReleasePackages::with(['artifacts'、'created_by'、'approved_by'])->get()代码>
我没有得到与用户的关系
。我在users表中有相应的用户id,列名为id。我从上述控制器代码中得到以下响应:
#relations: array:3 [▼
"artifacts" => Collection {#265 ▶}
"created_by" => null
"approved_by" => null
]
如何更改代码以使关系正常工作?对于创建人()
和批准人()
来说,您的关系是错误的,应该属于
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');
}
with()方法仅用于加载相关模型,而不用于加载列!在工件内部,您将拥有创建人、批准人,非常感谢。它现在工作正常。再次感谢!!很高兴能帮上忙。。快乐编码:)当然再帮我一个忙。如何在Blade中显示它?我需要显示一个名为display\u name
的字段,我在foreach中尝试了$item->created\u by->display\u name
。但是它显示错误试图获取非对象的属性“display_name”
我认为函数名是由()创建的,而您使用的是created_,这是错误{{$item->created_by->display_name???'}
这是因为我在表中有列名created_by
。
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');
}