2016-04-13 1 views
2

У меня есть вопрос о реляционной модели Laravel вLaravel как получить имя автора в комментариях модели через пост модель

comment table  id post_id 

post table   id author_id 

author table   id name 

Я хочу использовать реляционную модель, чтобы получить имя автора в комментариях модели через пост таблицу, как осознать это. Большое спасибо.

ответ

0

Необходимо создать отношения hasMany между сообщением и пользователем. Для этого вы должны написать эту функцию отношения в моделях:

Сообщение Модель:

// A post can have 1 author 
public function author() { 
    return $this->belongsTo('App\User'); 
} 

модель Пользователь:

// A user can have multiple posts 
public function posts() { 
    return $this->hasMany('App\Post'); 
} 
+0

Большое спасибо, –

2

Отношения в Laravel довольно прямо вперед, чтобы реализовать и действительно легко понять из-за выразительного API. Так что в вашем случае логика была бы так:

Комментарий относится к сообщение и сообщение принадлежит Автор

Так считая вас есть Comment, Post и Author, каждый должен иметь определенный метод отношений, который отражает вышеприведенную логику.


Comment модель будет выглядеть следующим образом:

class Comment extends Model 
{ 
    public function post() 
    { 
     return $this->belongsTo(Post::class); 
    } 
} 

И Post модель будет выглядеть следующим образом:

class Post extends Model 
{ 
    public function author() 
    { 
     return $this->belongsTo(Author::class); 
    } 
} 

Затем вы можете легко получить доступ к имени автора сообщения с помощью этих отношений :

Comment::find(1)->post->author->name; 

Как видно из кода выше, код записи для отношений очень прост, так как имена методов действительно наводящие на размышления. Вы можете больше узнать о «Откровенных отношениях» в Laravel Documentation.

+0

Большое спасибо, я решил, что следовать за вами step.thanks –

+0

Вы очень приветствуются. – Bogdan

0
class Post extends Model 
{ 
    public function author() 
    { 
     return $this->belongsTo(Author\class)->select('name'); 
    } 
} 

Comment::with('author')->find(1); 

in blade 

{{$comment->auther['name']}} 
+0

Ответы требуют правильных объяснений. –

+0

У него также есть опечатки и, по крайней мере, одна очевидная опечатка. –

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