2016-12-14 37 views
0

我有兩個類用戶消息hasManyThrough上同款

我試圖從用戶類這樣

得到的答覆給用戶的郵件在用戶類

public function replies() 
{ 
    return $this->messages->replies; 
} 

然而,這似乎並沒有工作,所以我想在hasManyThrough操作

public function replies() 
{ 
    return $this->hasManyThrough(Message::class,Message:class,'reply_id','user_id','id'); 
} 

這不會是因爲獨特的表問題

什麼是執行此操作的最佳方式的工作嗎?

我應該只使用原始獲取?

public function replies() 
{ 
    return Message::whereIn('reply_id', $this->messages->pluck('id'))->get() 
} 

裸記住我可能也想你爲什麼要使用hasManyThrough()時,它僅僅是一個一對多的關係進行分頁和排序功能

+1

你想獲得的所有答覆從用戶模型的所有消息? – aimme

+0

@aimme是正確的 – Kendall

+0

使用'with'怎麼樣? – aimme

回答

-1

我會做你的情況是在用戶對象使用$this->hasMany('\App\Models\Message')

然後Message對象中使用$this->belongsTo('\App\Models\User')

然後從你的用戶對象,你就能夠做到$user->messages->replies

https://laravel.com/docs/5.3/eloquent-relationships#one-to-many

用戶對象:

class User extends Model { 

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

消息對象:

class Message extends Model { 

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

然後某種例如控制器功能中,你可以這樣做:

$user = User::with('messages')->findOrFail(1); 

這將與被其關聯的消息返回用戶對象。

,那麼你可以這樣做:

$user->messages->replies 
+0

我不認爲你有它正確我試圖讓他的消息「其他用戶」的回覆。我想通過使用hasmany通過我將使用reply_to作爲一個外鍵本身,但沒有別名我得到的問題 – Kendall