我正在构建一个基于laravel 4的Web应用程序,该应用程序使用非常基本的消息传递系统,这里是表结构:
messages table
--------------
id int pri
from_user int fk (users table)
to_user int fk (users table)
content text
created_at datetime
updated_at datetime
我正在尝试检索一个数组,其中包含按messages.from_user和messages.to_user分组的所有消息,显示根据场景发送或接收的最后一条消息。
这是我一直在玩的代码
$id = Auth::user()->id;
$messages = DB::table('messages')
->join('users', 'users.id', '=', 'messages.from_user')
->select(
'users.id AS from_user_id',
'users.first_name AS from_user_name',
'users.profile_img AS from_user_img',
'users.alias AS from_user_alias'
)
->where('messages.to_user', '=', $id)
->groupBy('messages.from_user')
->get();
foreach ($messages as $single) {
$last = parent::where('messages.to_user', '=', $single->from_user_id)
->orWhere('messages.from_user', '=', $single->from_user_id)
->orderBy('created_at', 'DESC')
->first();
}
// return view make with messages
当用户收到邮件时,此代码可以正常工作,但作为发件人,在收到回复之前我将无法看到对话。
我也在查询每个分组消息的数据库,我不太确定是否会影响性能,因为我是mysql web应用程序的新手。
提前致谢, 干杯
答案 0 :(得分:0)
http://laravel.com/docs/eloquent
像对待父母一样,在消息表中尝试这种技术!