基于另一行laravel检索行

时间:2014-11-03 10:46:45

标签: laravel laravel-4

我正在研究一个基本系统,博客从其他数据库表中检索图像,但它显示的是帖子而不是照片 这是我的控制器:

$bloginfo=bloginfo::where('blog_name','=',$name)->first();
    $blogposts=pageposts::where('p_id','=',$bloginfo->id)->orderBy('id','desc')->get();
    foreach($blogposts as $posts){
        $photoscount=pagephotos::where('b_id','=',$posts->id)->count();
        $blogphotos=pagephotos::where('b_id','=',$posts->id)->get();

    }
    return View::make('myblog')
    ->with('bloginfo',$bloginfo)
    ->with('blogposts',$blogposts)
    ->with('blogphotos',$blogphotos)
    ->with('photoscount',$photoscount);

这是我的观点:

@foreach($blogposts as $posts)
                    <div class="panel panel-default">    
                        <div class="panel-body">
                            @if($photoscount==0)
                                {{ null }}
                            @elseif($photoscount==1)
                           //a bunch of code here
                              @else

                               //a bunch of code here
                              @endif
                            <h4><a href="">{{ $posts->title }}</a></h4>
                            <p>{{ $posts->description }}</p>

                        </div>
                    </div>
                    @endforeach

1 个答案:

答案 0 :(得分:1)

我建议你研究关系,这也可能是你的答案。

您可以在一个查询中急切加载所有数据。

bloginfo::with('posts', 'posts.images')->where('blog_name','=',$name)->first();

这将加载博客帖子,其中包含与其相关的所有信息,即帖子及其图片。看这里设置它们。 HERE

由于您当前的问题在您的for循环中,因此您将覆盖您设置n次的变量,即按照发布的数量。所以你可能会总是得到不同的结果。