【问题标题】:Laravel 8: How to show result from related tables at bladeLaravel 8:如何在刀片上显示相关表的结果
【发布时间】:2021-03-05 03:05:01
【问题描述】:

我正在使用 Laravel 8 开发我的项目,在这个项目中,我创建了两个表。

其中一个名为users,仅包含网站的用户信息,另一个名为tags,其中包含一些用户可以从中选择的主题标签。

我还创建了另一个名为tag_user 的表,它可以存储tag_iduser_id,如下图所示:

然后在模型User,我添加了这个:

public function tags()
    {
        return $this->belongsToMany(Tag::class);
    }

在模特Tag

public function users()
    {
        return $this->belongsToMany(User::class);
    }

现在我想在每个标签中显示nameAuth::user() 已被选中。

所以为了做到这一点,我编写了这个代码:

<h2 class="text-primary">{{ Auth::user()->tags() }}</h2>

但是这个返回htmlspecialchars() expects parameter 1 to be string, object given错误。

所以我的问题是,我怎样才能在刀片上正确显示这个结果?

非常感谢你们的任何想法或建议......

还有表格tags的截图,如果你想看的话:

提前致谢。

【问题讨论】:

  • 您是否尝试过 Auth::user->tags 并记住没有 () 大括号?
  • @i89human 它显示了这个:id":1,"name":"php","label":"","created_at":null,"updated_at":null,"pivot":{"user_id":4,"tag_id":1}},{"id":2,"name":"javascript","label":"","created_at":null,"updated_at":null,"pivot":
  • @i89human 如何正确显示标签名称
  • 我给了详细的回复。

标签: php laravel laravel-8


【解决方案1】:

您不需要使用带有花括号的 tags()。 Auth::user()->tags 就可以了。没有花括号。

@foreach(Auth::user()->tags as $tag)

<p>
{{ $tag->name. ',' }}
</p>

@endforeach

Tags() 会告诉你你正在调用什么样的关系。用于构建对该关系的查询。但是,如果您将使用 Auth::user()->tags ,那么它将显示真实数据。记住这一点。永远不要在 laravel 关系中使用花括号。

【讨论】:

    【解决方案2】:

    我想找这样的东西,

    <h2 class="text-primary">@foreach(Auth::user()->tags as $tag)
    {{ $tag->name. ',' }}
    
    @endforeach</h2>
    

    【讨论】:

      【解决方案3】:

      用户模型中的关系是错误的,它一定有很多。 用户有很多标签,标签属于用户。

      还有标签(属于用户),不属于很多。

      在标签中:

        public function user()
        {
           return $this->belongsTo(User::class);
        }
      

      在用户模型中:

        public function tags()
         {
            return $this->hasMany(Tag::class);
         }
      

      【讨论】:

      • 你能告诉我我应该在模型中添加什么吗?
      • 他不需要改变关系或任何事情。他正在使用带有大括号的标签()。他需要使用 Auth::user()->tags
      • 这也是正确的,但他也需要修改关系,因为它是错误的。
      • @AhmedAli 为什么?我想这只是多对多的关系。
      猜你喜欢
      • 2016-08-18
      • 2017-03-12
      • 2016-10-01
      • 2021-12-16
      • 2021-04-03
      • 1970-01-01
      • 1970-01-01
      • 2017-10-28
      • 2020-06-18
      相关资源
      最近更新 更多