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');
}