Возникают проблемы с отображением всего контента в моей таблице желаний - PullRequest
0 голосов
/ 03 июня 2019

Я пытаюсь получить данные из моей таблицы пожеланий для конкретного пользователя, но пока она получает только первые данные в таблице, просто возвращая один массив вместо трех в таблице с тем же идентификатором пользователя

 public function getWishlistByUserId($id){
    $wishlists = Wishlist::where('userId', $id)->get();
    foreach($wishlists as $wishlist){
        $products = Product::where('id', $wishlist->productId)->get();
        return $products;
    }
}

Ответы [ 3 ]

2 голосов
/ 03 июня 2019

Это происходит потому, что цикл foreach возвращает значение во время первой итерации. Поместите ваш оператор return вне цикла. Также вы можете улучшить свои показатели, используя отношения .

Примером может быть:

// Product.php
public function wishlists()
{
    return $this->hasMany(Wishlist::class);
}

// Your method
public function getWishlistByUserId($id)
{
    return Product::whereHas('wishlists', function ($query) use ($id) {
        $query->where('userId', $id);
    });
}
1 голос
/ 03 июня 2019

В идеале это n + 1 ситуация

Поэтому я предлагаю использовать отношение laravel, например:

в вашей модели списка желаний

public function product(){
    return $this->hasMany(Product::class,'productId','id');
}

получить данные с отношением

 public function getWishlistByUserId($id){
    $wishlists = Wishlist::with('product')->where('userId', $id)->get();
}
0 голосов
/ 07 июня 2019

Я наконец смог заставить его работать таким образом, я просто поместил результат в массив, а затем вернул его за пределы цикла, спасибо всем за вашу помощь

public function getWishlistByUserId($id){


    $wishlists = Wishlist::where('userId', $id)->get();

    $wishlist = [];
    foreach($wishlists as $wish){
    $product = Product::where('id', $wish->productId)->get();
    array_push($wishlist, $product);
    }
    return $wishlist;

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...