2016-09-19 5 views
1

Голосов таблице:Извлечение данных из полиморфного отношения

id user id vote votable_id votable_type 
1  4  5  1   App\Comment 
2  2  4  4   App\Answer 
.... 

Ответ и комментарий модель

public function votes() 
    { 
     return $this->morphOne('App\Vote', 'votable'); 
    } 

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

Голосов Модель:

public function votable() 
    { 
     return $this->morphTo(); 
     } 
public function user() 
    { 
     return $this->belongsTo('App\User','user_id','id'); 
    } 

Как получить ответы и комментарии, по которым вошедший в систему пользователь проголосовал от модели пользователя.

$user=User::where(['id'=>Auth::user()->id])->with('questions','answers','comments','comments.votes','votes') 
    ->first(); 

ответ

1

Вы хотите поддержать элементы из синтезированных моделей, которые существуют в голосах модель поэтому вы должны запросить трансформировалась модель с «голосом» отношениями whereHas Состояния:

$result = Answer::whereHas('votes', function($query) { 
    $query->where('user_id', Auth::user()->id); 
})->get(); 

$result = Comment::whereHas('votes', function($query) { 
    $query->where('user_id', Auth::user()->id); 
})->get(); 
Смежные вопросы