我在使用 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/