doujiang2812 2015-07-10 19:37 采纳率: 0%
浏览 506

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

Let's say I have a User and Group model that has a one-to-many relation. User can belong 0 or 1 group. Group can have many users.

When I show a list of users, I also want to display his group's name--if he belongs to one. So I do this:


If the user doesn't belong to a group, this will--of course--throw an error.

So I do something like this:

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

Now in my actual app there isn't just group. There a lot more relationships that I loop through from within the view. Like, role, account, etc.

So I don't really want to clutter up my view with that. Is there a way to check if a data exists from within the model?

Something like this, perhaps?

class User extends Model
    // .. snip

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

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

Am I going about this the wrong way? Is this already available? I haven't seen anything on the docs or on google that can help me with this (maybe looking for the googling the wrong words?).

So if anyone could point me in the right direction, that'd be great.

  • 写回答

1条回答 默认 最新

  • donglei2022 2015-07-11 06:05

    You may create an accessor method in your User model for example:

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

    So, in the view, you can use something like this:

    {{ $user->group_name }}

    The output will be either a group name or Oops! Nothing..

    本回答被题主选为最佳回答 , 对您是否有帮助呢?



  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能
  • ¥15 jmeter脚本回放有的是对的有的是错的
  • ¥15 r语言蛋白组学相关问题