Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在资源收集中使用whenLoaded我得到了错误

在资源收集中使用whenLoaded我得到了错误
EN

Stack Overflow用户
提问于 2020-03-11 00:06:01
回答 1查看 1.1K关注 0票数 0

在laravel 6应用程序中,我有一个资源收集,它对我来说很好:

代码语言:javascript
运行
AI代码解释
复制
class UserSkillCollection extends ResourceCollection
{
    public static $wrap = 'user_skills';

    public function toArray($request)
    {

        return $this->collection->transform(function($userSkill){
            return [
                'id' => $userSkill->id,
                'user_id' => $userSkill->user_id,
                'user_name' => $userSkill->user_name,
                'skill_id' => $userSkill->skill_id,
                'skill_name' => $userSkill->skill_name,
                'rating' => $userSkill->rating,
                'created_at' => $userSkill->created_at,
            ];
        });

    }

除非定义了一些字段,比如user_name,否则我有带空值的键。

为了摆脱它们,我尝试使用whenLoaded,但是使用了行:

代码语言:javascript
运行
AI代码解释
复制
'user_id' => $this->whenLoaded('user_id'),

我有错误:

代码语言:javascript
运行
AI代码解释
复制
"message": "Method Illuminate\\Support\\Collection::relationLoaded does not exist.",

哪条路是有效的?

修改后的 : --我在模型中添加了关系并制作了:

代码语言:javascript
运行
AI代码解释
复制
  'user' => $userSkill->whenLoaded('user'),

代码语言:javascript
运行
AI代码解释
复制
  'user' => $this->whenLoaded('user'),

我有错误:

代码语言:javascript
运行
AI代码解释
复制
Call to undefined method App\UserSkill::whenLoaded(

我猜想这个错误是我从Collection中调用的。有多正确?

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-11 03:35:51

relationLoaded()是从Illuminate\Database\Eloquent\Model上的HasRelationships特性继承而来的方法。

您的代码试图在Illuminate\Support\Collection的一个实例上访问它。

尝试访问关系user而不是关键user_id。就像这样:

代码语言:javascript
运行
AI代码解释
复制
$this->whenLoaded('user')
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60631583

复制
相关文章

相似问题

添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档