Laravel访问关系 - 检查模型中是否存在数据

时间:2015-07-10 19:37:29

标签: php laravel eloquent laravel-5

假设我有一个具有一对多关系的UserGroup模型。用户可以属于01组。集团可以有很多用户。

当我显示用户列表时,我还想显示他的组名 - 如果他属于一个。所以我这样做:

$user->group()->first()->name

如果用户不属于某个群组,这当然会抛出错误。

所以我这样做:

!empty($user->group) ? $user->group()->first()->name : 'No group here'

现在在我的实际应用中,不只是group。我在视图中循环了很多关系。喜欢,角色,帐户等。

所以我真的不想弄清楚我的观点。有没有办法检查模型中是否存在数据?

也许是这样的事情?

class User extends Model
{
    // .. snip

    public function group()
    {
        if (empty($this->group)) {
            return 'Nothing here';
        }

        return $this->hasOne(App\Group::class);
    }
}

我是以错误的方式来做这件事的吗?这已经有了吗?我没有在文档或谷歌上看到任何可以帮助我的东西(也许是在寻找谷歌搜索错误的单词?)。

所以,如果有人能指出我正确的方向,那就太好了。

1 个答案:

答案 0 :(得分:1)

您可以在User模型中创建一个存取方法,例如:

public function getGroupNameAttribute()
{
    $this->group ? $this->group->name : 'Oops! Nothing.';
}

因此,在视图中,您可以使用以下内容:

{{ $user->group_name }}

输出将是组名或Oops! Nothing.