在 Eloquent 关系上使用 first()

Posted

技术标签:

【中文标题】在 Eloquent 关系上使用 first()【英文标题】:Using first() on Eloquent Relationships 【发布时间】:2022-01-15 05:17:56 【问题描述】:

美好的一天。我在我正在维护的代码中看到了这个 sn-p。我试图理解它的含义(比如我什至必须向某人解释)。谁能帮助简化? 代码如下所示。

public function pullFrom(string $appType)
    
        switch ($appType) 
            case 'personal':
            case 'plugin':
                return $this->belongsTo(PersonalUser::class, 'local_id')->first();
            default:
                throw new \Exception('Invalid user type provided', Response::HTTP_INTERNAL_SERVER_ERROR);
        
    

$user->pullFrom($app_type)->first(); 一样吗

【问题讨论】:

这是在名为 User.php 的模型中吗? 你认为这段代码“意味着”什么,是吗?您的问题说“方法与调用方法是否相同”没有意义... 是的@GilesBennett,它在一个名为 User.php 的模型中 【参考方案1】:

我认为你应该从 belongsTo 关系中删除 ->first() 默认情况下,belongsTo 仅返回与其相关的类的 1 个元素,并将其从您所做的调用中删除:

public function pullFrom(string $appType)
    
        switch ($appType) 
            case 'personal':
            case 'plugin':
                return $this->belongsTo(PersonalUser::class, 'local_id');
            default:
                throw new \Exception('Invalid user type provided', Response::HTTP_INTERNAL_SERVER_ERROR);
        
    

【讨论】:

谢谢@Marwane

以上是关于在 Eloquent 关系上使用 first()的主要内容,如果未能解决你的问题,请参考以下文章

laravel eloquent - 在嵌套急切加载的关系上不使用

Eloquent:在关系上调用 Where

Laravel 关系上的枢轴关系 (Eloquent)

Laravel Eloquent 关系有很多错误:在 where 上使用时调用未定义的方法

Laravel Eloquent 在 belongsToMany 关系上返回一个空集合

Laravel 4 Eloquent 动态 Where 子句