gpt4 book ai didi

php - 使用 Laravel 在用户和管理员之间建立简单的消息系统

转载 作者:搜寻专家 更新时间:2023-10-31 21:23:15 25 4
gpt4 key购买 nike

我在用户和管理员之间创建了简单的消息系统。当用户报告某些项目时,我会存储他的报告,然后管理员会为该报告设置“向用户重播”按钮。

我想我弄乱了数据库表和关系,所以请帮助我理解这一点。

所以我有表 reports 和列 + 示例数据(两个用户报告相同的项目)

report_id | user_id | item_id
1 1 1
1 2 1

此表包含从用户 (user_id) 到给定项目 (item_id) 的报告。然后我有一个名为 reports_messages 的表,其中包含列 + 用户和管理员之间的重播示例

report_id | user_id | item_id | messages
1 1 1 Report
1 admin 1 answer from admin
1 2 1 Report from other user
1 admin 1 answer from admin to other user

这是我的ReportMessages 模型

class ReportMessages extends Model
{
protected $table = 'reports_messages';

protected $fillable = [
'report_id', 'user_id', 'messages', 'item_id'
];

public function reports(){

return $this->belongsTo('App\Report');
}

public function users()
{
return $this->hasOne('App\User', 'id', 'user_id');
}
}

在管理 Controller 中,这是我显示给定 item_id 的所有报告的方式

public function details( $item_id ){

$flags = Item::find($item_id)->report->unique('user_id');
return view('details', compact('flags'));
}

按钮重播给用户

<a href="{{URL::to('replays/' . collect($flags)->first()->item_id)}}">Replay To User</a>

和路线

Route::get('details/{details}', 'FlagsController@details')->name('details');

问题:当我有 2 个用户报告相同的项目并且我单击重播给用户按钮时,无论我打开哪个用户,我都会收到两个用户的消息。

我知道问题可能出在按钮上,因为我添加了 collect($flags)->first()->item_id ,它给我的是项目 ID 而不是用户 ID,但我想不通这里的关系以及当我点击重播给 id=1 的用户时如何只加载他的消息。

更新:元素模型

public function report(){
return $this->hasMany('App\Report', 'item_id','id');
}

最佳答案

在你的 Controller 中

public function details( $item_id ){

$flags = Item::where('item_id',$item_id)->get();
return view('details', compact('flags'));
}

在你看来

foreach($flags as $flag):
<a href="{{URL::to('replays/' . $flag->item_id.'/'.$flag->user_id)}}">Replay To User</a>
endforeach;

关于php - 使用 Laravel 在用户和管理员之间建立简单的消息系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41802184/

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