如何加载与 Eloquent 的关系?

How to load relationship with Eloquent?

我有一个Link模型,每个link都有一个owner(在DB中用ownerId表示,是Usertable的外键)。

这是 Link 模型:

<?php namespace App\Http\Models;

use Illuminate\Database\Eloquent\Model;

class Link extends Model {

protected $table = "Link";

// ...

// Relationships
public function owner()
{
    return $this->belongsTo(User::class, 'ownerId', 'id');
}

}

当我在 Link 控制器中使用 $data = Link::find($linkId)->toJson(); 时,包含所有者但在 JSON 数据中为空。我也尝试了 $data = Link::with('owner')->find($linkId)->toJson();$data = Link::find($linkId)->load('owner')->toJson();

当我使用 $data = Link::find($linkId)->owner->toJson(); 时,我得到了用户数据。我的代码中是否缺少某些内容?

有没有办法在 link 对象中加载所有者并通过 JSON 获取它而不需要额外的请求/步骤?

$data = Link::with('owner')->find($linkId)->get();

我终于找到问题了。我的用户 table 中的主键不是标准的(它是一个字符串键而不是 int)。 我在我的用户模型中添加了以下几行:

public $incrementing = false;
public $keyType = 'string';

现在 $data = Link::with('owner')->find($linkId); 一切正常。