2016-03-03 4 views
0

У меня есть модель Post, которая принадлежит модели Category. У меня также есть индексная страница, в которой перечислены все Post s, и для каждого из них мне нужно напечатать имя Category, к которому принадлежит.Lagervel's Eager Loading приводит все данные из базы данных

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

class Category extends Model 
{ 
    public function posts() 
    { 
     return $this->hasMany(Post::class); 
    } 
} 

Мои PostController::index

public function index() 
{ 
    return \View::make('admin/post/index')->with([ 
     'posts' => \DB::table('posts')->orderBy('id', 'DESC')->get(), 
     'category' => Post::with('category')->get() 
    ]); 
} 

Подобно этому, если я эхо $category, он показывает все зарегистрированные категории внутри каждой строки в Post. Я не знаю, что я могу сделать в представлении, чтобы показать правильное имя категории для каждого Post.

Я сделал это, на мой взгляд, но, как это, он показывает только регистр х таблицы для каждого Post:

@foreach ($posts as $post) 
    <tr> 
     <td> 
      <a href="/admin/post/view/{{ $post->id }}"> 
       {{ $post->title }} 
      </a> 
     </td> 
     <td> 
      {{ str_limit($post->content, 120) }} 
     </td> 
     <td> 
      {{ $category[1]->category->category }} 
     </td> 
     <td> 
      {{ date('m/d/Y', strtotime($post->created_at)) }} 
     </td> 
     <td> 
      <a href="/admin/post/edit/{{ $post->id }}" class="btn btn-primary"> 
       Edit 
      </a> 
      <a href="/admin/post/delete/{{ $post->id }}" class="btn btn-danger"> 
       Delete 
      </a> 
     </td> 
    </tr> 
@endforeach 

Как правильно выводить имя из Category, который связанные с Post, с Laravel 5.2 с использованием Eager Loading?

ответ

1

Я думаю, что ниже шаги могут вам помочь.
В модели вы делаете отношения с catefory, как показано ниже:

class Post extends Model 
{ 
protected $fillable = [ 
    'name', 
    'category_id' 
]; 

    //Relation with category Model category table 
public function relCategory(){ 
    return $this->belongsTo('App\Category', 'category_id', 'id'); 
} 
} 

После этого вы получите все данные в контроллер от столба модели, как показано ниже:

public function index() 
{ 
    return \View::make('admin/post/index')->with([ 
    'data' => App\Post::orderBy('id', 'DESC')->get() 
    ]); 
} 

Теперь в странице просмотра вы можете назвать модель отношение и вид, как показано ниже:

@foreach($data as $values) 
    <td> 
    {{ $values->relCategory->category }} 
    </td> 
@endforeach 
+0

Спасибо. Он решил это. В чем разница между использованием '\ DB :: table ('posts') -> orderBy ('id', 'DESC') -> get()' и вашего решения? – mfgabriel92

+0

@GabrielMFernandes ... когда вы используете DB :: it обрабатываете прямой запрос .. но когда вы используете Model .. тогда запрос при первой передаче в Model затем обрабатывает SQL-запрос. В вашем случае я использую Post Model, чтобы я мог доступ к методу relCategory внутри этой модели сообщения ... –

+0

Я вижу. Спасибо за ваше решение. – mfgabriel92

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

  • Нет связанных вопросов^_^