2015-05-28 4 views
0

У меня есть две модели, которые являются RoomCategory и Room. и я хочу разбивать все комнаты, связанные с каждой комнатой, на цикл foreach, вот мой MVC.Как связать связанную модель в laravel

Модель

class RoomCategory extends \Eloquent { 
    public function Room(){ 
     return $this->hasMany('Room','category_id','id','RoomCategory'); 
    } 
} 

class Room extends \Eloquent { 
    public function RoomCategory(){ 
     return $this->belongsTo('RoomCategory','id','category_id','Room'); 
    } 
} 

Контроллер

public function index() 
{ 
    $room_category = RoomCategory::get() 
     ->with('Room')->paginate(1); 

    return View::make('pages.roomlist', compact('room_category')); 
} 

Посмотреть

@foreach($room_category as $category) 
    {{$category->name}} 
    @foreach($category->room as $rooms) 

     {{$rooms->name}} 

     {{$category->room->links()}} 
    @endforeach 
@endforeach 

и я получил эту ошибку

вызовов в унд()

Может кто-то помочь мне в том, чтобы разбивать эти комнаты под петлями foreach в номерах. спасибо

ответ

0

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

Это пример кода:

public function index() 
{ 
    $room_category = RoomCategory::with('Room')->paginate(1); 

    return View::make('pages.roomlist', compact('room_category')); 
} 

Ваше мнение:

@foreach($room_category as $category) 
    {{$category->name}} 
    @foreach($category->Room as $rooms) 
     {{$rooms->name}} 
    @endforeach 
@endforeach 
0

Вам не нужно получить() метод, если вы используете постраничной. Заменить этот

$room_category = RoomCategory::get() 
    ->with('Room')->paginate(1); 

с этим

$room_category = RoomCategory::with('Room')->paginate(1); 

EDIT

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

$room_category = RoomCategory::with([ 
       'Room' => function($query) { 
        $query->latest()->limit(5); 
       } 
       ])->paginate(3); 

На ваш взгляд, индекс разбиваться категории и сделать ссылку на каждой странице категории и постраничной ваш номер их

index.blade.php

@foreach($room_category as $room_cat) 
    @foreach($room_cat->Room as $room) 
     <div class="room-section"></div> 
    @endforeach 
    <a href="{{ url('category', $room_cat->id) }}">View more of this category</a> 
@endforeach 

{{ $room_category->links() }} 

Ваш контроллер

public function showCategory($id) 
{ 
    $room_category = RoomCategory::with([ 
       'Room' => function($query) { 
        $query->latest()->paginate(8); 
       } 
       ])->find($id); 

    return View::make('category.show', compact('$room_category')); 
} 

и категория/show.blade.php вы можете в комнате для просмотра фотографий

@foreach($room_category->Room as $room) 
    <div class="room-section"></div> 
@endforeach 

{{ $room_category->Room()->links() }} 
+0

была ошибка еще раз, когда я сделать этот код 'Вызов неопределенной метод Осветите \ Database \ красноречивый \ Коллекция :: ссылки()' – wHooZaa

+0

он Разбивать на $ room_category не $ category-> номер – wHooZaa

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