Мне нужна помощь с отношениями красноречивой модели Laravel. У меня есть три таблицы:
элементы
item_id
slideshowID
слайд-шоу
slideshow_id
изображения
image_id
slideshowID
Я потратил весь день, пытаясь заставить его работать, я просто не могу. Я хочу, чтобы у каждого элемента было собственное слайд-шоу изображений.
модель элемента
public function images(){
return $this->hasManyThrough(
'App\image','App\slideshow','slideshow_id','slideshowID','slideshowID'
);}
контроллер
$items=item::with('images')->get();
return \View::make('home')->with('items', $items);
Просмотреть
@foreach($items as $item)
<div class='item' data-categoryid='{{$item->categoryID}}'>
<div class='item-image'>
@foreach($item->images as $image)
<img src='{{URL::asset($image->path)}}' data-image-id='{{$image->image_id}}' style='display:none'>
@endforeach
</div>
<div class='item-name'>{{$item->name}}</div>
<div class='item-price'>Od {{$item->price}}€</div>
<button class='btn-blue'>Več...</button>
</div>
@endforeach
Запрос
select `images`.*, `slideshows`.`slideshow_id` from `images` inner join `slideshows` on `slideshows`.`slideshow_id` = `images`.`slideshowID` where `slideshows`.`slideshow_id` in (?, ?, ?, ?, ?, ?, ?)" array(7) { [0]=> int(1) [1]=> int(7) [2]=> int(2) [3]=> int(6) [4]=> int(3) [5]=> int(4) [6]=> int(5) }
Вывод – массив пустых изображений
{"items_id":1,"code":"999","name":"koledar","description":"","slideshowID":1,"stock":999,"price":5.5,"categoryID":2,"images":[]}
EDIT Мне удалось вытащить несколько изображений, но они не те.
Item: 3
Slideshow fk:2
Slideshow id:3
9 images/bon2.jpg
Slideshow id:3
10 images/bon.jpg
Он всегда получает слайд-шоу, равное идентификатору элемента. Я попытался добавить в модель элемента protected $foreignKey='slideshowID', но ничего не меняет.