选择从user_id到user_id的消息

时间:2017-01-24 09:29:48

标签: php laravel laravel-5

我试图让非常简单的功能用户只能向管理员发送消息,管理员可以回复此消息。

到目前为止,我已经使用以下列

创建了表message
id | from_id | to_id | subject | message 

在控制器中我有这个应该选择发送给当前登录用户的所有消息(不确定是否正确)

public function index(){
        //$messages = Message::latest()->get();
    $currentUser = Auth::user()->id;
    $messages = Message::
        whereRaw('message.id = (select max(id) from `message` m2 where m2.to_id = '.$currentUser.')' )
        ->orderBy('id', 'desc')
        ->get();        
    return view('test.index', compact('messages'));
}

现在我试图制作viewMessage功能

在索引刀片中,这是指向单个消息的链接

{!! link_to('test/view/' . $message->from_id, $message->subject) !!}

我的路线

Route::get('test/view/{id}', 'MessageController@messageView')->name('test.view');

和控制器功能

public function messageView($id) {

    $user = User::where('id', $id)->first();

    $messages = $user->messages()->orderBy('created_at', 'asc')->get();
    return View::make('test.view', compact('messages'));
}

当我点击按钮时出现此错误

  

SQLSTATE [42S22]:未找到列:1054未知列&#39; message.user_id&#39;在&#39; where子句&#39; (SQL:select {from message messageuser_id = 4和messageuser_id不是created_at asc的空订单< / p>

在用户模型中,我添加了与以下消息的关系:

public function messages() {
    return $this->hasMany('App\Message');
}

在消息模型中

public function user(){ 
    return $this->belongsTo('App\User');
}

我的问题为什么在查询中查找user_id时我在按钮上发送from_id以及如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

  

为什么查询中正在寻找user_id

您需要add foreign key and ID to the relationship来修复错误,例如:

public function messages() {
    return $this->hasMany('App\Message', 'from_id', 'id');
}