我试图让非常简单的功能用户只能向管理员发送消息,管理员可以回复此消息。
到目前为止,我已经使用以下列
创建了表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未知列' message.user_id'在' where子句' (SQL:select {from
message
message
。user_id
= 4和message
。user_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以及如何解决这个问题?
答案 0 :(得分:1)
为什么查询中正在寻找
user_id
您需要add foreign key and ID to the relationship来修复错误,例如:
public function messages() {
return $this->hasMany('App\Message', 'from_id', 'id');
}