Php Laravel 5.1雄辩的关系不起作用
我尝试了论坛上所有的答案,没有一个对我有帮助 App\User.php模型定义了一种关系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
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()
)