Как получить коллекцию Eloquent, если коллекция содержит данные или число> 0? - PullRequest
0 голосов
/ 06 февраля 2020

Рассмотрим этот пример ... который получает изображение продукта.

Эта функция должна получать данные только в том случае, если она существует, в противном случае она должна возвращать ноль ... потому что в противном случае она получит изображения для продукта. на сайте будет отображаться 404 не найденное изображение ...

// Product. php

public function getFileImageURL()
{
    $referType = 1; //Product = 1

    if(File::where('file_refer_id','=', $this->id)
            ->where('file_refer_type','=', $referType)
            ->count()>0)
    {
        return $imageFileItems = File::where('file_refer_id','=', $this->id)
            ->where('file_refer_type','=', $referType)
            ->get();
    }
}

РЕДАКТИРОВАТЬ:

Дополнительные сведения

// ProductController. php

public function show($slug)
{
    $product = $this->productRepository->findProductBySlug($slug);
    $productImages = $product->getFileImageURL();

    return view('pages.product.show', compact('product', 'productImages'));
}

// product / show.blade. php

@if($productImages)
    <a href=" {{ $productImages->first()->file_url }}" data-lightbox="product-images" data-alt="{{ $productImages->first()->title }}" data-title="{{ $productImages->first()->name }}"><img src="{{ $productImages->first()->file_url }}"></a>
@else
    <a href="#"><img alt="Image not found" src="{{ asset('images/products/404.png') }}"></a>
@endif

1 Ответ

2 голосов
/ 06 февраля 2020

Вызов get() от Eloquent всегда вернет вам коллекцию Eloquent; это означает, что вы можете использовать методы сбора на нем.

Учитывая то, что вы хотите сделать, нужно сделать следующее:

public function getFileImageURL()
{
    $referType = 1; //Product = 1

    $imageFileItems = File::where('file_refer_id','=', $this->id)
            ->where('file_refer_type','=', $referType)
            ->get();

    return $imageFileItems->isNotEmpty() 
        ? $imageFileItems
        : null;
}

Это также избавляет вас от необходимости выполнять дополнительные , ненужный, запрос, чтобы получить количество записей.

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