如何在Laravel中的Views / Blade文件中查询表

时间:2016-08-02 10:53:53

标签: laravel laravel-5.2 blade laravel-blade

我有一组array存储id的{​​{1}},我想显示blog post帖子blog } id中存在,我无法通过array传递它,因为我将大量数据传递给视图,并且动态调用博客帖子视图,在我的控制器I& #39; m得到所有帖子并通过视图:

controller

现在看来我有一个$blogpost = Post::all(); 'blogpost' => $blogpost //data passed in return view 并且假设我想要获得我试图做的那个特定帖子的图像:

foreach loop

我收到错误

  

方法findOrFail不存在

此外,如果我将@foreach($contents->blogid as $blogid) <?php $blog = $blogpost->findOrFail($blogid); ?> <div class="col-sm-4"> <article class="post post-masonry"> <div class="post-image"> <div class="image"> <img src="{{ $blog->featured_image }}" alt=""> <div class="image-extras"> <a href="#" class="post-gallery"></a> </div> </div> </div> </article> </div> @endforeach 更改为:

findOrFail

我收到错误:

  

尝试获取非对象的属性

帮帮我们。

感谢。

3 个答案:

答案 0 :(得分:3)

您不应该混合原生PHP和刀片模板。

相反,让刀片为您完成工作! :)

@foreach($contents->blogid as $blogid)

..
<img src="{!! \App\Post::findOrFail($blogid)->featured_image; !!}" alt="">
..

@endforeach

您甚至不需要传递'blogpost'变量,只要您拥有到Post类的正确路线即可。我使用的是App \ Post,但对你而言可能会有所不同。

答案 1 :(得分:1)

Post::all()将返回一个Post对象数组。因此,只需将该数组传递给您的刀片模板,然后遍历该数组的每个Post。您还应将变量名称更改为博客 s

PHP

$blogposts = Post::all();

return view('blog.index', ['blogposts' => $blogposts]);

刀片

@foreach ($blogposts as $blogpost)
    <p>{{ $blogpost->id }}</p>
    <p>{{ $blogpost->featured_image }}</p>
@endforeach

答案 2 :(得分:-1)

findOrFail或仅find不具备本机PHP功能。您可以尝试静态调用,但我认为使用Laravel Relationship可以轻松解决您的问题,您的代码将不仅仅是干净的。

https://laravel.com/docs/5.1/eloquent-relationships

抱歉,第一步是英语。