选择从user_id到user_id的消息
I'm trying to make really simple function user to be able to message to admin only and admin to answer on this message.
So far I've made table message
with following columns
id | from_id | to_id | subject | message
In the controller I have this which should select all messages which are sent to current logged in user ( not sure if is correct )
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'));
}
Now I'm trying to make viewMessage
function
In index blade this is the link to single message
{!! link_to('test/view/' . $message->from_id, $message->subject) !!}
My Route
Route::get('test/view/{id}', 'MessageController@messageView')->name('test.view');
And controller function
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'));
}
When I click on the button I got this error
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'message.user_id' in 'where clause' (SQL: select * from
message
wheremessage
.user_id
= 4 andmessage
.user_id
is not null order bycreated_at
asc)
In User model I've added relation to message like:
public function messages() {
return $this->hasMany('App\Message');
}
And in Message model
public function user(){
return $this->belongsTo('App\User');
}
My question why in the query is looking for user_id when on my button I send from_id and how to fix this?
我正在尝试制作非常简单的功能用户,只能向管理员发送消息,管理员才能回复此问题 信息。 p>
到目前为止,我已经使用以下列创建了表 在控制器中我有这个应该选择发送给当前登录用户的所有消息(不确定是否正确) p>
现在我正在尝试使 在索引刀片中,这是单个消息的链接 p>
我的路线 p> \ n
和控制器功能 p>
当我点击按钮时出现此错误 p >
SQLSTATE [42S22]:未找到列:1054'where子句'中的未知列'message.user_id'(SQL:select * from 在用户模型中,我添加了与消息的关系,如: p>
在消息模型中 p>
我的问题为什么在 我在发送from_id按钮时查询是否正在寻找user_id以及如何解决这个问题? p>
div> message code> p>
id | from_id | to_id | 主题| 消息
code> pre>
public function index(){
// $ messages = Message :: latest() - > get();
$ currentUser = Auth :: user() - > id;
$ messages = Message ::
whereRaw('message.id =(从`message` m2中选择max(id),其中m2.to_id ='。$ currentUser。')')
- > orderBy(' id','desc')
- > get();
返回视图('test.index',compact('messages'));
}
code> pre>
viewMessage code> function p>
{!! link_to('test / view /'。$ message-> from_id,$ message-> subject)!!}
code> pre>
Route :: get('test / view / {id}','MessageController @ messageView') - > name('test.view');
code> pre>
公共功能messageView($ id){
$ user = User :: where('id', $ id) - > first();
$ messages = $ user-> messages() - > orderBy('created_at','asc') - > get();
返回查看: :make('test.view',compact('messages'));
}
code> pre>
message code>其中 通过
created_at code>
message code>。 asc) p>
blockquote>
public function messages() {
re 转$ this-> hasMany('App \ Message');
}
code> pre>
public function user(){
return $ this-> belongsTo('App \ User');
}
code> pre>
Why in the query is looking for
user_id
You need to add foreign key and ID to the relationship to fix the error, for example:
public function messages() {
return $this->hasMany('App\Message', 'from_id', 'id');
}