首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“如果”或“isset”没有显示任何东西,也没有让人感到恶心。

“如果”或“isset”没有显示任何东西,也没有让人感到恶心。
EN

Stack Overflow用户
提问于 2022-05-15 11:26:09
回答 2查看 67关注 0票数 0

我在8节里做了拉拉。返回几列的数据库查询(雄辩式)。

代码语言:javascript
复制
$wgName = Auth::user()
            ->join('wg_groups', 'users.wg_group_id', '=', 'wg_groups.id')
            ->get();

现在,我希望在我的html视图中,如果设置了wg_name,就会显示它。我尝试了以下四种方法:

代码语言:javascript
复制
@if(isset($wgName->wg_name))

    <h1>{{$wgName->wg_name}}</h1>

@endif

这里什么也不显示

代码语言:javascript
复制
@if(isset($wgName))

    <h1>{{$wgName->wg_name}}</h1>

@endif

异常:此集合实例上不存在属性wg_name。

代码语言:javascript
复制
@isset($wgName)

    <h1>{{$wgName->wg_name}}</h1>

@endisset

异常:此集合实例上不存在属性wg_name。

代码语言:javascript
复制
@isset($wgName->wg_name)

    <h1>{{ $wgName->wg_name }}</h1>

@endisset

这里什么也不显示

我不知道为什么它不能工作,我也没有在文档中找到任何东西。https://laravel.com/docs/8.x/eloquent

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-05-15 11:46:23

在查询生成器上调用->get()将为您提供一个包含多个用户的集合实例。而且集合实例上肯定没有wg_name,所以结果总是错误的。

尝试使用first()

代码语言:javascript
复制
$wgName = Auth::user()
            ->join('wg_groups', 'users.wg_group_id', '=', 'wg_groups.id')
            ->first();
票数 1
EN

Stack Overflow用户

发布于 2022-05-15 11:45:29

当前,您正在从数据库中选择所有用户。这是因为出色地将不存在的方法重定向到新的查询生成器实例。

通过将查询更改为使用first()方法而不是get()方法,您将只收到一条记录,但这可能不是正确的记录,因为它没有考虑到当前用户。

解决这个问题有多种方法。

1:只需使用一个简单的查询来接收wg_name

代码语言:javascript
复制
$wgName = DB::table('wg_groups')->find(Auth::user()->wg_group_id);

2:在User模型中添加一个全局范围,以便在查找用户时始终加入wg_group数据。

您可以将以下方法添加到User模型中,以便在查询users表时始终加入此表。

代码语言:javascript
复制
protected static function booted()
{
    self::addGlobalScope('include_wg_group', function (\Illuminate\Database\Eloquent\Builder $query) {
        $query->join('wg_groups', 'users.wg_group_id', '=', 'wg_groups.id');
    });
}

现在,每当您收到一个User实例时,它都会将wg_groups的所有信息加入其中。这样您就可以像这样获取名称:

代码语言:javascript
复制
$wgName = Auth::user()->wg_name;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72247819

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档