模型关系和路线得到模型ID

时间:2013-05-29 12:06:27

标签: laravel eloquent

我有以下路线:

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-&gt; id

的正确方法是什么

感谢

如何在循环内的if语句中过滤注释?               @if(isset($ note-&gt; title)!='shorttext')

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

4 个答案:

答案 0 :(得分:1)

您在路线中使用$ destination-&gt; id但似乎尚未定义。问题是,你想用你的代码实现什么? 用:

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

您只获得一个特定目的地的Notes(到目前为止,$ destination未定义。您可以使用Destination :: all() - &gt; first()获取第一个,或者Destination :: find(id ),将ID替换为您需要的目标的主键值。

但我想你不希望这样。从您的输出看起来您希望每个目的地都有一个输出,并且每个目的地下面都有相应的Notes。

控制器:

//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会显示你所有的目的地以及每个目的地的所有笔记。

答案 1 :(得分:0)

在您的路线中,您不向视图发送$ notes变量。

我该怎么做:

   $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

答案 2 :(得分:0)

首先你问了一个问题,我给了你一个正确答案。 您将我的答案标记为已接受,但稍后您编辑了您的初始问题以添加另一个问题(您应该为此创建一个新线程)。 然后你创建自己的答案,只回答你的初始问题的一部分,并将其标记为良好的解决方案?

我可以告诉你为什么你的缺点和空虚不起作用,但如果你不重视我的帮助,为什么我呢?

答案 3 :(得分:-1)

行 最后一部分最终得出结论 函数isset和empty不起作用,奇怪:

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