首页 > 解决方案 > Laravel 雄辩的范围总是返回一个集合

问题描述

我有以下模型:

class EmailAddress extends Model
{
    public function scopePrimary($query)
    {
        return $query->firstWhere('is_primary', true);
    }
}

class User extends Model
{
    public function emailAddresses()
    {
        return $this->hasMany(EmailAddress::class);
    }
}

echo $user->emailAddresses()->primary()->get();

我希望 Laravel 返回一个模型,因为firstWhere()基本上LIMIT 1在查询中确实如此,但我总是得到一个包含一个模型的集合。难道我做错了什么?如何解决?

提前致谢!

标签: phplaraveleloquentlaravel-8laravel-query-builder

解决方案


也许您可以利用hasOne of many 关系

class User extends Model
{
    public function primaryEmailAddress()
    {
        $this->hasOne(EmailAddresses::class)->ofMany([], function ($query) {
            $query->where('is_primary', true);
        });
    }
}

推荐阅读