id (PK) ->message ->sentTo ->belongsTo ->i-6ren">
gpt4 book ai didi

php - 是否可以在 laravel 中使用 "hasMany"关联同一张表?

转载 作者:行者123 更新时间:2023-11-29 05:59:43 26 4
gpt4 key购买 nike

我在使用 Laravel 创建聊天系统时有点卡在这里我创建了一个表来存储这样的消息

inbox_message
->id (PK)
->message
->sentTo
->belongsTo
->isStarred
->isRead
->isDraft
->group_message_id (FK) in the same table (inbox_messages).

现在,group_message_id 将作为引用 ID 的 FK(FK 和 PK 在同一个表中)

为了抓取,我实现了这样的hasMany关系

public function child(){
return $this->hasMany(message::class,'group_message_id','id');
}

现在,我不是在子节点中获取所有消息,而是在子节点中获取 [] 数组,并像这样分别获取所有消息。

[
{
"id": 2,
"message": "msg2 by patient6 to doctor 3",
"belongsTo": 6,
"sentTo": 3,
"isStarred": 0,
"isDraft": 0,
"isRead": 1,
"group_message_id": 1,
"created_at": "2017-09-05 03:48:19",
"updated_at": "2017-09-05 06:52:33",
"deleted_at": null,
"child": []
},
{
"id": 4,
"message": "msg4 by patient6 to doctor 3",
"belongsTo": 6,
"sentTo": 3,
"isStarred": 0,
"isDraft": 0,
"isRead": 1,
"group_message_id": 1,
"created_at": "2017-09-05 03:54:35",
"updated_at": "2017-09-05 06:52:33",
"deleted_at": null,
"child": []
}
]

我为获取结果所做的查询

$userMsgs = message::with( [
'child' => function ( $query ) {
$query->where( 'isDraft', '!=', 1 );
}
] )->where( 'isDraft', '!=', 1 )
->where( 'sentTo', $authId )
->get();

问题是否可以在 Eloquent 情况下关联同一张表,如果是,请告诉我哪里错了?

感谢您的帮助,我非常需要 :)

最佳答案

尝试使用 self 关系

class message extends Eloquent {

function child(){
return $this->hasMany('message', 'group_message_id');
}
}

希望这会有所帮助。

关于php - 是否可以在 laravel 中使用 "hasMany"关联同一张表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46054152/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com