当前位置: 首页 > 知识库问答 >
问题:

在刀片中显示连接查询结果

赖渊
2023-03-14

在blade模板中显示查询结果时,我遇到了一些困难。基本情况:我有两张桌子;国家和发行人。国家模型与发行人有许多关系,反之亦然。这两种关系都在模型中正确定义。我试图显示一个发行人列表,其中也包含该国的名称(国家)。我在IssuersController中的查询如下:

      $issuers = ISSUER::join('countries', 'issuers.country_id', '=', 'countries.id')
             ->select('issuers.*', 'countries.nation')
             ->orderBy('nation', 'asc')
             ->orderBy('author', 'asc')
             ->get();

此查询在dd()中有效;显示它为每个发卡机构返回一个数组,其中包括所有发卡机构html" target="_blank">数据以及相应的国家名称(如nation)。完美的然而,当我试图在视图中显示它时,我遇到了一堵墙。我的第一次尝试就是使用

                      @foreach($issuers as $issuer)
                   <tr>
                     <td>{{ $issuer->id }}</td>
                     <td>{{ $issuer->nation }}</td>
                     <td>{{ $issuers->author }}</td>

这将返回$nation上的未定义变量。我不知道为什么会发生这种情况,因为我没有尝试访问这段关系。我只是尝试访问从查询返回的数组的结果。在这一点上,这种关系不应该是相关的。不管怎样,尝试使用我尝试过的关系

                      @foreach($issuers as $issuer)
                   <tr>
                     <td>{{ $issuer->id }}</td>
                     @foreach($issuer->nation as $nation)
                     <td>{{ $issuer->nation }}</td>
                     @endforeach
                     <td>{{ $issuers->author }}</td>

它返回和无效的参数提供的Foreach()错误。接下来我尝试用这个方法...

                      @foreach($issuers as $issuer)
                   <tr>
                     <td>{{ $issuer->id }}</td>
                     @foreach($issuer->Country() as $nation)
                     <td>{{ $issuer->nation }}</td>
                     @endforeach
                     <td>{{ $issuers->author }}</td>

这不会抛出错误,但也不会返回任何内容。该列被简单地跳过,其他所有被回声的列被向左移动一列。

我有点迷路了,我想这是因为我的大脑固执地认为我访问的是查询结果的元素而不是关系的元素,所以我不太明白为什么我需要一个单独的循环来处理这一列,或者循环应该如何工作。任何帮助都将不胜感激。

编辑:更改了最后一部分,因为我打错了。

共有2个答案

卫才哲
2023-03-14
    Change this

$issuers = ISSUER::join('countries', 'issuers.country_id', '=', 'countries.id')
             ->select('issuers.*', 'countries.nation')
             ->orderBy('nation', 'asc')
             ->orderBy('author', 'asc')
             ->get();
TO

$issuers = ISSUER::
                 ->join('countries', 'issuers.country_id', '=', 'countries.id')
                 ->derBy('nation', 'asc')
                 ->orderBy('author', 'asc')
                 ->get();

    Get all the content in your Blade like this

    {{ $issuers ['type_the_name_of_the_column_you_want_to_display'] }}
齐宗清
2023-03-14

为后来偶然发现的人回答这个问题。通过将查询更改为,我可以直接从查询结果中访问nation的值,而无需使用模型关系

->select('issuers.*', 'countries.nation')

->select('issuers.*', 'countries.nation as nation')

从他们的我只是访问的价值,因为我将一切:

                 <td>{{ $issuer->id }}</td>
                 <td>{{ $issuer->nation }}</td>
                 <td>{{ $issuers->author }}</td>
 类似资料:
  • 问题内容: 我正在尝试从sql数据库中的php中显示结果,MySQL语句是正确的,并且可以在phpMyAdmin中执行我想要的操作,但是由于某种原因,我的代码在网页中中断了 这是代码 这就是我得到的 通常,我需要由表ID限制从最小值到最大值的随机数 问题答案: 您需要从查询获得的结果集中的每一行中获取数据。您可以为此使用。 将代码更改为此:

  • 我的数据库中只有大约16000个节点,当我匹配n返回n时,我从来没有得到任何图回来,任何原因或如何修复?

  • 问题内容: 我有一些简单的查询: 我想你现在结果如何。 我要做的是根据查询结果中显示的数据量显示一些序号。它就像(这并不意味着我要显示ID)。我想要的结果是: 我该怎么做呢? 提前致谢 问题答案:

  • 问题内容: 我有一个数据库表看起来像这样 当我运行此查询时,应该不显示任何行,因为不存在具有value的行: SELECT * FROM tableName WHERE ID =‘101foo2’ 我得到的结果具有相同的ID,但没有单词 如果我的查询是如何显示具有ID的行 问题答案: 您正在混合类型。 是一个整数(或数字)。您正在将其与字符串进行比较。因此,MySQL需要确定用于比较的类型。使用什

  • 我已经成功地连接和运行查询来从neo4j数据库检索数据。现在的问题是,我只能显示结果中的一个节点。如何修改它以显示所有节点?

  • 问题内容: 所以我创建了一个集成脚本,但是由于某种原因它没有显示出正确的结果。我的查询是 结果中出乎意料的一行之一是这个 ID为11的组具有display_style_priority 2000而不是5200。它应显示具有display_style_priority 5200的用户组ID。这是该用户所在的排名最高的组。有人可以指出我做错了什么。 问题答案: 尝试将GROUP BY更改为 其他大多数