2015-07-24 2 views
2

Я использую Laravel 5.1. Короче говоря, у меня есть почтовая публикация, которая может иметь много версий: несколько черновиков и одну опубликованную версию. «Опубликованный» является собственностью почтовой версии. Итак, у меня есть две модели, один контроллер и вид:Как получить только одну строку из связанной модели в laravel 5.1?

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

class Post extends Model{ 

    public function published(){ 
    return $this->hasMany('App\PostVersion')->where('published', 1); 
    } 
} 

PostVersion Модель:

class PostVersion extends Model{ 

    public function post(){ 
    return $this->belogsTo('App\Post'); 
    } 
} 

А вот мой контроллер:

class PostsController extends Controller{ 

    public function index(){ 

     // Only published version of all posts 
     $posts = Post::with('published')->get(); 
     return view('posts.index', compact('posts'));  
    } 
} 

У меня опубликовано только одно сообщение о версии. Так что, когда $ сообщений повторяются, я хотел бы сделать что-то вроде этого:

$post->published->title 

вместо

$post->published[0]->title 

Как я могу сделать это?

ответ

0

Вам нужно определить опубликовал отношение, как один-к-одному, а не один-к-многим:

class Post extends Model { 
    public function published(){ 
    return $this->hasOne('App\PostVersion')->where('published', 1); 
    } 
}