Mysql / laravel组查询结果


Mysql / laravel group query results

我正在构建一个基于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应用程序。

提前感谢,欢呼声

http://laravel.com/docs/eloquent 

在您的消息表中尝试此技术,就像您对父母所做的那样!