簡體   English   中英

Laravel HasManyThrough關系為空輸出

[英]Laravel HasManyThrough relation empty output

我需要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}}&euro;</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":[]}

編輯我設法得到一些圖像,但它們是錯誤的。

Item: 3
Slideshow fk:2
Slideshow id:3
9 images/bon2.jpg 
Slideshow id:3
10 images/bon.jpg 

它總是獲得與項目ID相等的幻燈片。 我試圖添加到受保護的項目模型$ foreignKey ='slideshowID',但沒有改變

您非常接近,只需要像此slideshows模型一樣進行一些更改,就需要在其中添加主鍵

protected $primaryKey = 'slideshow_id';//https://github.com/laravel/framework/blob/5.3/src/Illuminate/Database/Eloquent/Model.php#L56

這是必需的,因為當您調用hasManyThrough請參見此處https://github.com/laravel/framework/blob/5.3/src/Illuminate/Database/Eloquent/Model.php#L875-L886

我解決了 我的數據庫表設置錯誤。 相反,如果有這樣的表:

項目

item_id
slideshowID

幻燈片放映

slideshow_id

圖片

image_id
slideshowID

我將它們更改為

項目

item_id

幻燈片放映

slideshow_id
item_id

圖片

image_id
slideshowID

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM