2017-04-02 12 views
1

とbelongsToManyは私が3つのデータベーステーブル作成:Laravel複数のテーブル

ユーザーを - ID - ユーザ名 - ...

メッセージを - ID - タイトル - メッセージ

messages_usermessages_id - - USER_ID -はが記載テーブルへの外部キーとして設定されmessages_userに

フィールドをreceive_user_id。

達成したい機能は次のとおりです。 自分が作成したものか、今受信したものなのか、ユーザーのすべてのメッセージを取得したいと思います。

現状: 私は私のユーザーモデル内で使用して作成したユーザーをすべてのメッセージを取得することができています:

return $this->belongsToMany('App\Messages', 'messages_user'); 
私の問題は、現在、私のように受信したメッセージを取得することはできませんよということです

1つのクエリで私は2番目のクエリを開始することができますが、私はそれらが別の方法でそれを達成する方法であると確信しています。

どうすればいいですか? :)

ありがとうございます!

答えて

0

この

モデルを試してみてくださいusers.php

class Users extends Model { 
    // Relation with messages_user table 
     public function messages_user() { 
     return $this->hasMany('App\Messages_user','id'); 
     } 
} 

モデルmessages.php

class Messages extends Model { 
    // Relation with messages_user table 
     public function messages_user() { 
     return $this->hasMany('App\Messages_user','id'); 
     } 
} 

モデルmessages_user.phpコントローラで

class Messages_user extends Model { 
    // Relation with users table 
     public function send_user() { 
     return $this->belongsTo('App\Users','user_id'); 
     } 

     public function receive_user() { 
     return $this->belongsTo('App\Users','receive_user_id'); 
     } 
    // Relation with messages table 
     public function messages() { 
     return $this->belongsTo('App\Messages','messages_id'); 
     } 

} 
public function user_all_messages($id) { 
     $data = Messages_user::with('send_user)->with('receive_user')where('user_id',$id)->orWhere('receive_user_id',$id)->get(); 
    } 
+0

私が知りたいと思っていたものです。欠落しているモデル(messages_user)を追加し、関係テーブルの名前を "messages_users"に変更する必要がありました。あなたの助けを大変感謝します。私はあなたから学んだことを次の機能に使用しようとします。 :) –

+0

編集:唯一欠けているのはメッセージそのものです。私はそれのハングアップを取得しようとし、正常に完了すると、このポストを更新します。 :) –

+0

メッセージを解決策としてマークしました。私は ' - > with( 'messages')'をクエリに追加するだけでした。 :) –

関連する問題