Красноречивое поле выбора с отношением - PullRequest
0 голосов
/ 30 мая 2018

Вот контроллер

$query = ( new Product() )->where( 'quantity', '>', 0 )
        ->where( 'product_category_id', '!=', null )
        ->where( 'soft_delete', 0 )
        ->whereBetween( 'price', [ $priceFrom, $priceTo ] )
        ->with( [
               'campaign' => function ( $q ) {
               $q->where( 'stock', '>', 0 );
               $q->where( 'expire', '>', Carbon::today()->toDateString() );
        }] )->first()// Check the campaign table if it has any record or not
            ->orderBy( 'price', $sort );

Теперь я пытаюсь получить цену из кампании, поэтому я пытаюсь сделать это в клинке

@if(count($product->campaign))
   <del>$425.00</del>
   {!! $product->campaign->price !!}
@endif

, но я получил

Свойство [цена] не существует в этом экземпляре коллекции.

как выбрать цену из кампании?

1 Ответ

0 голосов
/ 30 мая 2018
    $query = Product::where('quantity', '>', 0)
        ->whereIsNotNull('product_category_id')
        ->where('soft_delete', 0)
        ->whereBetween('price', [$priceFrom, $priceTo])
        ->with([
            'campaign' => function ( $q ) {
                $q->where( 'stock', '>', 0 );
                $q->where( 'expire', '>', Carbon::today()->toDateString());
             }
         ])
         ->first()// Check the campaign table if it has any record or not
         ->orderBy('price', $sort);

Свойство [цена] не существует в этом экземпляре коллекции.Эта ошибка, потому что ваша модель продукта имеет отношение кампании HasMany.Для получения отдельной цены кампании используйте

@if(count($product->campaign))
   <del>$425.00</del>
   @foreach ($product->campaign as $compaign)
   {!! $coampaign->price !!}
   @endforeach
@endif
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...