2017-04-02 83 views
1

我創建3個數據庫表:Laravel - belongsToMany多個表

用戶 - ID - 用戶名 - ...

消息 - ID - 標題 - 消息

messages_user - messages_id - USER_ID - 在messages_user receive_user_id

字段被設置爲外鍵根據表。

我想要實現的功能是: 我想獲取用戶的所有消息,不管是他自己創建的還是他剛收到的。

現狀: 我能得到的所有消息通過使用我的用戶模型中創建了一個用戶:

return $this->belongsToMany('App\Messages', 'messages_user'); 

目前我的問題是,我沒能拿到收到的消息中以及一個查詢。我可以開始第二個查詢,但我確定他們是以另一種方式實現這一點的一種方式。

這是可能的,如果,怎麼樣? :)

在此先感謝!

回答

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

聖鉬,這正是我想知道!我需要添加缺少的Model(messages_user)並將我的關係表重命名爲「messages_users」。非常感謝您的幫助,我會盡量使用我從您那裏學到的以下功能。 :) –

+0

編輯:唯一缺少的東西現在是消息本身。我會試着去掌握它,並在成功完成後更新這篇文章。 :) –

+0

標記爲解決方案的消息。我只需要用('messages')將' - >添加到查詢中。 :) –