【问题标题】:laravel retrieve multiple values separated by commas in a column as separate valueslaravel 检索列中以逗号分隔的多个值作为单独的值
【发布时间】:2014-11-15 03:55:08
【问题描述】:

您好,我的数据库中有一个名为 client_website 的列,在我的 client 数据库中,在某些情况下有多个网站链接,这些链接用逗号分隔:

www.link1.com, www.link2.com, www.link3.com 

我带的时候先查询我的项目控制器

   @foreach ($clients as $client)   
   {{ $client->client_name }}
    {{ $client->email }}
   {{ $client->client_website }}
   @endforeach

字面意思如下:

www.link1.com, www.link2.com, www.link3.com 

当我将它包装在<a> 标签中时,它会用所有三个链接填充href,无论如何我可以去掉逗号并将它们溢出到三个单独的实体中吗?

【问题讨论】:

  • 您需要规范化该数据库(分别存储这些值)或使其非规范化并explode字符串,将其转换为您可以迭代的字符串列表。

标签: php laravel eloquent blade


【解决方案1】:

另外,我建议你在这种情况下定义一个accessor

class Client extends Eloquent {

    public function getClientWebsiteAttribute($value)
    {
        return explode(', ', $value);
    }

}


@foreach ($clients as $client)   
   {{ $client->client_name }}
   {{ $client->email }}
      @foreach ( $client->client_website as $client_website)
          {{ $client_website }}
      @endforeach
@endforeach

【讨论】:

    【解决方案2】:

    您必须在其中放置第二个 foreach,这有点脏,但确实有效。因此,您将放置另一个 foreach,然后放在爆炸的网站串上,这将为所有网站创建一个锚点。

    想象这些是客户网站:

    www.link1.com、www.link2.com、www.link3.com

    你的代码应该是这样的:

    @foreach ($clients as $client)   
       {{ $client->client_name }}
       {{ $client->email }}
          @foreach (explode(', ', $client->client_website) as $client_website)
              {{ $client_website }}
          @endforeach
    @endforeach
    

    这将输出:

    客户名称客户邮箱www.link1.comwww.link2.comwww.link3.com

    然后您可以在其周围添加各种样式。它适用于任意数量的客户和任意数量的网站。请注意,网站列表需要用逗号分隔尾随空格

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-17
      • 2019-03-29
      • 1970-01-01
      • 2012-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多