2016-10-31 3 views
0

У меня есть 3 столы изображений, альбомов и мур, я хочу просмотреть изображения каждого альбома, основываясь на ссылке murs_id, которая является идентификатором мура.Как просмотреть изображения в альбоме

изображения: ID albums_id изображения

альбомы: идентификаторов имя изображения murs_id

Murs: 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 получить это сообщение об ошибке: Нельзя использовать объект типа stdClass как массив .

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) 
     ) 
+0

ошибку только из-за '[ 'образ'] 'или где-нибудь еще для' $ grids'? – devpro

+0

как, пожалуйста, подробнее? – nabil

+0

'print_r ($ grids)' и совместно использовать результат – devpro

ответ

0

Попробуйте это:

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

всегда такая же ошибка! – nabil

+0

, пожалуйста, проверьте 'dd ($ grids); ' –

+0

массива: 6 [▼ 0 => {# 235 ▼ + "образ": "af6a8ce73d995a028422293bdc23774e.png" } 1 => {# 236 ▼ + "изображение": "00204bc5330c4f6b84028d23b6e96c09.png" } 2 => {# 241 ▼ + "образ": "b474b62ca932066ee5ac77094c757e74.png" } 3 => {# 242 ▼ + "образ": "2c24b205b24bb1b47da90c54e2babfdb.png" } 4 => {# 243 ▼ + "изображение": "2d4b78b29ee5abbe103eed7b6b42cbdb.png" } 5 => {# 244 ▼ + "изображение": "6041a1abb83b18d38918fe9c79309596.jpg" } ] – nabil

0

Ваша ошибка где-то позже в использовании $ сетках. С помощью этого кода вы получаете PHP stdClass Objects, вы не можете сделать что-то вроде -> first() на нем.

Вы можете обернуть его в коллекции, как это:

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

Я хотел бы предложить вам использовать eloquent relationships для базы данных запрашивающего. Если вы установили отношения должным образом, то вы можете написать как:

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

Чтобы использовать соотношение между Image и Album добавить album() функцию в Image класса как:

image.php

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

Вы можете получить доступ к значениям $ grid как массив, но он возвращает объект. Вместо $grids[0]['image'] попробуйте $grids[0]->image.

Если вы зацикливание, то

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

После отладки $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 
} 
?> 
+0

спасибо, для меня я сделал это $ Val [picture ']; :( – nabil

+0

@nabil: :). и это будет работать для u? – devpro

Смежные вопросы