2013-05-29 4 views
0

у меня есть следующий маршрут:модель отношений и пути получить Идентификатор модели

Route::get('notes/main', function(){ 

     $destinations = Destination::where('show', '=','1')->get(); 
     $notes = Destination::find($destination->id)->notes()->get(); 
     return View::make('notes.main') 
     ->with('destinations', $destinations); 

}); 

// в модели отношений:

<?php 
class Destination extends Eloquent { 
    public function notes() 
    { 
    return $this->has_many('Note'); 
    } 
} 

<?php 
class Note extends Eloquent 

{ 
     public function destination() 
     { 
      return $this->belongs_to('Destination'); 
     } 

} 

// Просмотр:

@foreach($destinations as $destination) 

{{ $destination->name}}<br> 
{ $notes->destination->text }} // this isn't echoed 
@endforeach 

что правильно способ фильтрации этого и определить $ destination-> id

thanks

Как бы фильтровать заметки в инструкции if внутри цикла? @if (Исеть ($ Примечание-> название)! = 'Shorttext')

  @else 
      <p> {{ $note->text }} </p> 
      @endif 
      @endforeach 

ответ

-1

OK для последней части этого работал на функции IsSet конец и пусто не работает, странно:

@if ($note->title == 'shorttext') 
0

В вашем маршруте, вы не переводящий $ отмечает переменную в представлении.

Как бы это сделать:

$destinations = Destination::where('show', '=','1')->get(); 
    $destinations->notes = Destination::find($destination->id)->notes()->get(); 

Тогда в силу:

@foreach($destinations as $destination) 
    {{ $destination->name}}<br> 
    {{ $destination->notes->text }} 
@endforeach 
+0

Я получаю: Неопределенная переменная: назначение – dflow

1

Вы можете использовать $> идентификатор назначения-в вашем пути, но это, кажется, еще не определена. Вопрос в том, чего вы хотите достичь с помощью своего кода? С:

$destinations = Destination::where('show', '=','1')->get(); 
$notes = Destination::find($destination->id)->notes()->get(); 

вы получаете только Notes одного конкретного назначения (до сих пор, $ назначения не определен Вы можете использовать Destination :: все() -> первая(), чтобы получить первое, или. Destination :: find (id), при этом идентификатор заменяется значением первичного ключа получателя, который вам нужен).

Но я думаю, вы не хотите этого. С вашего вывода кажется, что вы хотите иметь выход с каждым пунктом назначения и под каждым пунктом назначения соответствующие заметки.

Контроллер:

//gets all the destinations 
$destinations = Destination::where('show', '=','1')->get(); 
return View::make('notes.main') 
    ->with('destinations', $destinations); 

Вид:

@foreach($destinations as $destination) 
    {{ $destination->name}}<br> 
    @foreach($destination->notes as $note) 
    {{ $note->text }} <br> 
    @endforeach 
    <hr> 
@endforeach 

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

+0

спасибо Matthias, единственное: – dflow

+0

Ваш комментарий кажется отрезанным, но я видел, что я ошибся в выходе. Это не должно быть $ destination-> notes-> text, а $ note-> text. Я отредактирую его соответственно –

0

Итак, сначала вы задали вопрос, я дал вам правильный ответ. Вы отметили мой ответ как принятый, но позже вы отредактируете свой первоначальный вопрос, чтобы добавить еще один вопрос (для которого вместо этого вы должны создать новый поток). Затем вы создаете свой собственный ответ, который отвечает только на ваш первоначальный вопрос и отмечает, что это хорошее решение?

Я мог бы рассказать вам, почему ваш isset и empty не сработали, но почему я должен, если вы вообще не цените мою помощь?

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