什么是Laravel与PDO :: FETCH_ASSOC类似的方法?

时间:2017-09-15 15:28:01

标签: php mysql laravel pdo laravel-5.3

我正在使用Laravel Framework 5.3更新我的php PDO网站。我发现Laravel非常容易使用,但很少有功能我不知道实现结果的语法。

我有一个Laravel控制器

 public function index(){

        $posts = Post::latest()->get();

        return view('/home', compact('posts'));
    }

我在刀片中使用foreach循环来获取数据

@foreach ($posts as $row)

@endforeach

类似于PDO中的fetchAll()方法

$row = $posts->fetchAll();

现在我希望逻辑获取结果(PDO :: FETCH_ASSOC),这样我就可以分配

$row = $posts->fetch(PDO::FETCH_ASSOC);

我必须这样做,因为我想在刀片中使用for循环来显示数据,如果我使用foreach循环,那么它会为迭代结果创建重复。以下是我必须使用Laravel

更新的PDO代码
for($i=0; $i<$count_photos; $i++){

        $row_gallery = $get_photos->fetch(PDO::FETCH_ASSOC);

        $pst_id = $row_gallery['post_id'];
        $img = $row_gallery['img_name'];


        echo '<div class="img_gallery"><div class="gallery'.$i.'"><a href="uploads/'. $img . '" data-lightbox="'.$pst_id.'"> <img class="img-responsive" src="uploads/'. $img . '"></a></div></div>';

      } 

1 个答案:

答案 0 :(得分:2)

当您使用get()时,模型已经被提取,因此您可以立即访问模型上的属性,例如

@foreach ($posts as $post)

    {{ $post->title }} //assuming you have a "title" column in the database

@endforeach

您可能会发现这有用:https://laracasts.com/series/laravel-from-scratch-2017/episodes/7

修改

如果您在photos模型中设置了Post关系,那么您可以eager load建立关系。此外,由于您只想加载一个帖子,因此您可以使用first()代替get(),这样您最终会得到以下信息:

<强>控制器

public function index()
{
    $posts = Post::with('photos')->latest()->first();

    return view('/home', compact('posts'));
}

刀片文件

@foreach($post->photos as $k => $photo)
    <div class="img_gallery">
        <div class="gallery{{ $k }}">
            <a href="{{ url('uploads/'.$photo->img_name) }}" data-lightbox="{{ $post->id }}">
                <img class="img-responsive" src="{{ url('uploads/'.$photo->img_name) }}">
            </a>
        </div>
    </div>
@endforeach