选择从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 where message.user_id = 4 and message.user_id is not null order by created_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>

到目前为止,我已经使用以下列创建了表 message code> p>

  id |  from_id |  to_id | 主题| 消息
  code>  pre> 
 
 

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

  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>

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

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

我的路线 p> \ n

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

和控制器功能 p>

 公共功能messageView($ id){
 
 $ user = User :: where('id',  $ id) - > first(); 
 
 $ messages = $ user-> messages() - > orderBy('created_at','asc') - > get(); 
返回查看:  :make('test.view',compact('messages')); 
} 
  code>  pre> 
 
 

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

SQLSTATE [42S22]:未找到列:1054'where子句'中的未知列'message.user_id'(SQL:select * from message code>其中 通过 created_at code> message code>。 asc) p> blockquote>

在用户模型中,我添加了与消息的关系,如: p>

  public function messages()  {
 re 转$ this-> hasMany('App \ Message'); 
} 
  code>  pre> 
 
 

在消息模型中 p>

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

我的问题为什么在 我在发送from_id按钮时查询是否正在寻找user_id以及如何解决这个问题? p> div>

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');
}