如何查看相册中的图像

How to view the images in an album

我有3个表images, albums, 和murs,我想查看每个相册的图片,根据murs_id的引用,也就是murs的id。

图片: ID albums_id 图片

专辑: ID 姓名 图片 murs_id

杂音: ID 滴度

$grids = DB::table('images')
                ->select(['image']);
          $grids->join('albums','images.albums_id','=','albums.id');
          $grids->where('albums.murs_id','=','12');
          $grids= $grids->get();

I get this error message : Cannot use object of type stdClass as array.

print_r($网格)

Array ( [0] => stdClass Object ( [image] => af6a8ce73d995a028422293bdc23774e.png ) 
            [1] => stdClass Object ( [image] => 00204bc5330c4f6b84028d23b6e96c09.png ) 
            [2] => stdClass Object ( [image] => b474b62ca932066ee5ac77094c757e74.png ) 
            [3] => stdClass Object ( [image] => 2c24b205b24bb1b47da90c54e2babfdb.png ) 
            [4] => stdClass Object ( [image] => 2d4b78b29ee5abbe103eed7b6b42cbdb.png ) 
            [5] => stdClass Object ( [image] => 6041a1abb83b18d38918fe9c79309596.jpg ) 
        )

试试这个:

$grids = DB::table('images')
               ->select('images.image')
               ->join('albums','images.albums_id','=','albums.id')
               ->where('albums.murs_id','=','12')
               ->get();

您的错误出现在稍后使用 $grids 的某个地方。使用此代码,您会收到 PHP stdClass 对象,您不能对其执行 ->first() 之类的操作。

您可以像这样将其包装在一个集合中:

$grids= collect($grids->get());

我建议您使用 eloquent relationships 作为查询数据库。如果你已经正确设置关系那么你可以写成:

$grids = Image::whereHas('album', function($q) {
          $q->where('murs_id', 12);
         })->get()

要使用 ImageAlbum 之间的关系,请在 Image class 中添加一个 album() 函数,如:

Image.php

public function album()
{
    return $this->belongsTo(App\Album::class);
}

您可能正在以数组形式访问 $grid 值,但它返回的是一个对象。尝试 $grids[0]->image.

而不是 $grids[0]['image']

如果你在循环,那么

foreach($grids as $grid) {
    echo $grid->image;
}

调试 $grids 后,您现在得到的响应清楚地显示了对象形式的结果,而不是数组形式。

Array ( 
[0] => stdClass Object ( [image] => af6a8ce73d995a028422293bdc23774e.png ) 
[1] => stdClass Object ( [image] => 00204bc5330c4f6b84028d23b6e96c09.png ) 
[2] => stdClass Object ( [image] => b474b62ca932066ee5ac77094c757e74.png ) 
[3] => stdClass Object ( [image] => 2c24b205b24bb1b47da90c54e2babfdb.png ) 
[4] => stdClass Object ( [image] => 2d4b78b29ee5abbe103eed7b6b42cbdb.png ) 
[5] => stdClass Object ( [image] => 6041a1abb83b18d38918fe9c79309596.jpg ) )

那么,如何从对象中获取值:

<?php
foreach ($grids as $value) {
    echo $value->image."<br/>"; // will print all images
}
?>