2017-01-24 2 views
0

Я пытаюсь сделать очень простой пользователь функции, чтобы иметь возможность отправлять сообщения только администратору и администратору для ответа на это сообщение.Выбор сообщений от user_id до user_id

До сих пор я сделал таблицу 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}', '[email protected]')->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]: Column не найдено : 1054 Неизвестный столбец 'message.user_id' в 'where clause' (SQL: select * от message, где message. user_id = 4 и message. user_id не является нулевой порядок по created_at возрастанию)

В модели пользователя я добавил отношение к сообщению как:

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

И в модели Message

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

Мой вопрос, почему в запрос ищет user_id, когда на моей кнопке я посылаю from_id и как это исправить?

+0

Ошибка вы получаете просто ... это означает, что на в таблице сообщений нет имени столбца 'user_id' правильно проверьте вашу таблицу –

+0

@MasivuyeCokile да, я получаю ошибку, что означает, что я просто не получал, откуда пришел этот user_id, так как я не добавлял его нигде. – VLS

ответ

1

Почему в запросе ищет user_id

Вы должны add foreign key and ID to the relationship, чтобы исправить ошибку, например:

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

Да, в этом была проблема. Мне сложно, так как я добавил FK в таблицы, они будут использовать их. Но на втором жестком я должен сказать, что посмотреть. спасибо – VLS

Смежные вопросы