2014-09-28 3 views
0

Я хочу найти то, что сделано данным пользователем на данном посту. У меня есть один сообщение модель, как: сообщениеПоиск родственной модели в laravel на основе родителя

class Post extends \Eloquent 
{ 


    protected $fillable = []; 

    public function likes() 
    { 
     return $this->morphMany('Like', 'likeable'); 
    } 


} 

и один Как модели, как:

class Like extends \Eloquent 
{ 
    protected $fillable = []; 

    /** 
    * @return \Illuminate\Database\Eloquent\Relations\MorphTo 
    */ 
    public function likeable() 
    { 
     return $this->morphTo(); 
    } 

    /** 
    * @return \Illuminate\Database\Eloquent\Relations\BelongsTo 
    */ 
    public function owner() 
    { 
     return $this->belongsTo('User', 'owner_id'); 
    } 

} 

и по умолчанию пользователя модель представлена ​​в Laravel.

теперь я опрошена сообщение модель, чтобы найти один пост с использованием post_id как

$post=Post::find(10); 

и пользователя модель как

$user=User::find(1); 

теперь я хочу, чтобы найти Как сделал этого пользователя (1) на Сообщение (10) Есть ли какая-либо функция в ларавеле для этого.

Я знаю, что я могу напрямую запросить Как использование сырого, где функционируют как

\Like::whereLikeableId('10')->whereLikeableType('Post')->whereUserId('1')->get(); 

, но это выглядит некрасиво, и я хочу знать Laravel способа сделать это.

ответ

0

Все, что вам нужно:

$like = $post->likes()->where('user_id', 1)->first(); 
+0

Спасибо за ваш ответ, который работал. Есть ли способ сделать это как: Like :: likeable ($ post) -> где ('user_id', 1), я имею в виду наоборот, чтобы это не зависело от родительской модели. – manish

+0

Вы можете использовать 'whereHas', но Я не думаю, что это упростит ситуацию. Зачем вам это нужно? –

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