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

How to query tables in Views/Blade file in Laravel

我有一组 array,其中存储 blog postid,我想显示 blog post id 出现在 array 中,我无法通过 controller 传递它,因为我将大量数据传递给视图和博客 post 视图是动态调用的,在我的控制器中,我得到所有 post 并通过视图:

$blogpost = Post::all();

'blogpost' => $blogpost //data passed in return view

现在我有一个 foreach loop 并且假设我想获取我正在尝试做的特定 post 的图像:

@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

我收到一个错误

Method findOrFail does not exist

此外,如果我将 findOrFail 更改为:

$blog = $blogpost->find($blogid);

我遇到一个错误:

Trying to get property of non-object

帮帮我。

谢谢。

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

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

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

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

@endforeach

您甚至不需要传递 'blogpost' 变量,只要您有通往 Post class 的正确路线即可。我用的是App\Post,但对你来说可能不一样。

findOrFail 或只有 find 不是原生函数 PHP。您可以尝试静态调用,但我认为您的问题很容易通过 Laravel 关系解决,您的代码会更干净。

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

抱歉,第一步是英语。

Post::all() 将 return 一个 Post objects 的数组。因此,只需将该数组传递给您的 blade 模板并循环遍历该数组的每个 Post。您还应该将变量名称更改为 blogposts.

PHP

$blogposts = Post::all();

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

Blade

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