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

如何转换有说服力的关系对象?

欧阳高昂
2023-03-14

我们有以下几种型号-

邮递

----------------------------------------------
| id | title | text | creator | status | etc |
----------------------------------------------
|    |       |      |         |        |     |
----------------------------------------------

creator -> belongsTo User

group -> belongsTo group

使用者

posts -> hasMany Posts

avatar -> hasOne Media

媒体

user -> belongsTo User

集团

post - belongsTo Post

当我使用eloquent获取帖子时,我可以使用transform函数来转换帖子属性,但无法转换帖子集合中的关系。

$posts = Post::where('status', 'active')
            ->with(['creator.avatar','group'])
            ->get();

$posts->transform(function($post) {
    $post->title = 'Transformed'; // works
    $post->creator->avatar = ['path'=>'/avatar/','file_name'=>'a.png']; // does not work
});

共有1个答案

赫连宏伯
2023-03-14

当你调用$post-

这很重要,因为这意味着您在由getRelation方法返回的对象上设置属性,您没有通过引用更新创建者关系-因此,当您再次调用getRelation('creator')时,原始关系值是返回。

因此,要实现您想要实现的目标,您需要覆盖creator关系值:

$posts->transform(function ($post) {
    $post->title = 'Transformed';

    $creator = $post->creator;

    $creator->avatar = [
        'path' => '/avatar/',
        'file_name' => 'a.png'
    ];

    $post->setRelation('creator', $creator); // or $post->creator = $creator;
});

 类似资料:
  • 我正在构建一个应用程序,以Laravel作为前端,Angular作为后端。我正在对用户发表的帖子和评论实施一个类似的系统。我与我的like系统有多态关系,因为用户可以喜欢帖子和评论。我的模型是这样的: 像模特 后模型 注释模型 我不知道该怎么做。当我加载一篇帖子或一条评论时,我想检索帖子的详细信息(我已经可以检索到了)以及喜欢它的人。如何在帖子中加载“喜欢”的数据?我应该在这里使用多态关系吗?提前

  • 很好的一天。我在我维护的代码中看到了这个片段。我试着去理解它的意思(比如我甚至需要向别人解释)。谁能帮助简化?代码如下所示。 这和说

  • 我有一个帖子和评论模型。 Post与评论有很多关系。评论与文章有关系。 我想用他们的评论加载帖子,但我想限制每个帖子只能得到3条评论。我怎样才能雄辩地做到这一点? 但是这个限制只会为所有10篇文章加载3条评论,而不是每个文章加载3条评论。 如果这还不可能通过Eloquent实现,是否有其他解决方案也可以实现即时加载? 谢谢

  • 我现在正在做连接4游戏,我正在绘制令牌,我需要通过单击右键或左按钮之类的事件来翻译它...这是我的代码 我不知道用哪一个函数翻译,我已经搜索了,但什么也没有找到,或者我应该从一开始就清除绘图并重新绘制?!

  • 在我的Laravel应用程序中,我有三个结构/模式完全相同的数据库表,然后有一个包含所有用户的“用户”表。 所有三个表都具有以下结构。。。 表1 id 表2 id 表3 id 现在我真的想把数据保存在这些单独的表中。但是,有一次我需要在同一个视图中显示这三个表中的所有条目,最好是orderedBycreated_at字段。 我使用以下代码来合并这些表: 出现的问题是雄辩的关系不起作用,Blade中

  • 本文向大家介绍说说你对数据类型转换的理解是什么?类型转换的方法有哪些?相关面试题,主要包含被问及说说你对数据类型转换的理解是什么?类型转换的方法有哪些?时的应答技巧和注意事项,需要的朋友参考一下 这个题有点大,,,写几个常用的吧 String to Number Number(str) +str Number to String toString(num) ''+num All to Boolea