Php Laravel 5.1雄辩的关系不起作用

Php Laravel 5.1雄辩的关系不起作用,php,eloquent,laravel-5.1,eager-loading,Php,Eloquent,Laravel 5.1,Eager Loading,我尝试了论坛上所有的答案,没有一个对我有帮助 App\User.php模型定义了一种关系 public function apikey() { return $this->hasOne('App\ApiKey', 'user_id', 'user_id'); } protected function user() { return $this->belongsTo('App\User','user_id','user_id'); } public function

我尝试了论坛上所有的答案,没有一个对我有帮助

App\User.php模型定义了一种关系

public function apikey()
{
    return $this->hasOne('App\ApiKey', 'user_id', 'user_id');
}
protected function user()
{
    return $this->belongsTo('App\User','user_id','user_id');
}
public function transform($resource) //$resource is a users object
{
    $user_id = (int) $resource->user_id;
    $apiKey = $resource->apikey->key;
    return [
        'user_id' => $user_id,
        'apikey' => $apiKey
    ];
}
App\ApiKey.php模型定义反向关系

public function apikey()
{
    return $this->hasOne('App\ApiKey', 'user_id', 'user_id');
}
protected function user()
{
    return $this->belongsTo('App\User','user_id','user_id');
}
public function transform($resource) //$resource is a users object
{
    $user_id = (int) $resource->user_id;
    $apiKey = $resource->apikey->key;
    return [
        'user_id' => $user_id,
        'apikey' => $apiKey
    ];
}
现在我有了一个转换函数,它是从controller调用的
return$this->response->withItem(**$users**,newusertransformer)

App\Transformer\UserTransformer.php

public function apikey()
{
    return $this->hasOne('App\ApiKey', 'user_id', 'user_id');
}
protected function user()
{
    return $this->belongsTo('App\User','user_id','user_id');
}
public function transform($resource) //$resource is a users object
{
    $user_id = (int) $resource->user_id;
    $apiKey = $resource->apikey->key;
    return [
        'user_id' => $user_id,
        'apikey' => $apiKey
    ];
}
我在
$apiKey=$resource->apiKey->key处得到以下错误

正在尝试获取非对象的属性

我不明白我哪里做错了请建议

谢谢


K

您应该尝试只传递一个模型,而不是用户。

查询时可以使用
first()
find()
来获得单个结果。

您应该尝试只传递单个模型而不是用户。

查询以获得单个结果时,可以使用
first()
find()

在响应中传递单个用户?是的,传递的是单个用户$用户是用户的集合,但在这种情况下,它总是只有一个用户。哇,上面没有输入错误吗$这个->response()缺少的括号表示我正在使用chrisbjr/apigaurd,response是该类的一个属性。我检查了dd($resource),它是一个具有单个用户的合适的用户模型对象。我不知道为什么急切加载会出错。@karmendra您应该尝试只传递一个模型,而不是
$users
。(提示:查询以获得单个结果时,请使用
first()
find()
在响应中传递单个用户?是的,传递的是单个用户$用户是用户的集合,但在这种情况下,它总是只有一个用户。哇,上面没有输入错误吗$这个->response()缺少的括号表示我正在使用chrisbjr/apigaurd,response是该类的一个属性。我检查了dd($resource),它是一个具有单个用户的合适的用户模型对象。我不知道为什么急切加载会出错。@karmendra您应该尝试只传递一个模型,而不是
$users
。(提示:查询时使用
first()
find()