假设我有一个具有一对多关系的User
和Group
模型。用户可以属于0
或1
组。组可以具有许多用户。
当我显示用户列表时,我还想显示他的组名——如果他属于某个组。所以我这样做:
$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);
}
}
我是不是走错路了?这个已经有了吗?我在文档或谷歌上没有看到任何可以帮助我的东西(也许是在寻找谷歌错误的单词?)。
如果有人能给我指出正确的方向,那就太好了。
您可以在User
模型中创建访问器方法,例如:
public function getGroupNameAttribute()
{
$this->group ? $this->group->name : 'Oops! Nothing.';
}
因此,在视图中,您可以使用如下内容:
{{ $user->group_name }}
输出将是组名或Oops!没什么代码>。